社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

用docker compose psql实现knex迁移

Christian • 5 年前 • 1341 次点击  

在docker compose容器中使用Knex js迁移时遇到问题。 问题是npm run db(knex migrate:rollback&knex migrate:latest&knex seed:run)将在创建数据库之前运行有没有说我只想在创建数据库之后运行npm run db?

注意:如果我在Docker终端上完成了这个NPM命令,一切都可以正常工作。仅供参考

这是我的docker-compose.yml

version: '3.6'

services:
  #Backend api
  server:
    container_name: server
    build: ./
    command: npm run db
    working_dir: /user/src/server
    ports:
      - "5000:5000"
    volumes:
      - ./:/user/src/server
    environment:
      POSTGRES_URI: postgres://test:test@192.168.99.100:5432/interapp
    links:
      - postgres

  # PostgreSQL database
  postgres:
    environment:
      POSTGRES_USER: test
      POSTGRES_PASSWORD: test
      POSTGRES_DB: interapp
      POSTGRES_HOST: postgres
    image: postgres
    ports:
      - "5432:5432"

这是我的档案

FROM node:10.14.0

WORKDIR /user/src/server

COPY ./ ./

RUN npm install

CMD ["/bin/bash"]
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48504
 
1341 次点击  
文章 [ 2 ]  |  最新文章 5 年前
michalhosna
Reply   •   1 楼
michalhosna    6 年前

简单地添加 depends_on 到服务器服务应该做到这一点。

services:
    server:
        depends_on:
            - postgres
        ...

这将导致docker compose在服务器容器之前启动postgres容器。不过,它不会等待Postgres准备就绪。在这种情况下,这应该不是问题,因为postgres启动非常快。

如果你想要更坚固的东西,或者 取决于 不起作用,您可以将入口点包装脚本添加到容器中。见 https://docs.docker.com/compose/startup-order/ ,您可以从中了解更多信息也有指向工具的链接,因此您不必从头开始编写自己的脚本。

Gabriel Ezenwankwo
Reply   •   2 楼
Gabriel Ezenwankwo    6 年前

在docker-compose.yml文件中,使用sh(bash)作为要在其中运行命令的包含环境上下文。即SH-C‘NPM运行数据库’ 你的docker compose文件现在是 其次,使用依赖步骤等待数据库启动

services:
  #Backend api
    server:
    container_name: server
    build: ./
    command: sh -c 'npm run db'
    working_dir: /user/src/server
  depends_on:
    -postgres
  ports:
    - "5000:5000"
  volumes:
    - ./:/user/src/server
  environment:
    POSTGRES_URI: postgres://test:test@192.168.99.100:5432/interapp
  links:
    - postgres