【问题标题】:Knex Migration with Docker Compose Psql使用 Docker Compose Psql 进行 Knex 迁移
【发布时间】:2018-12-03 12:34:05
【问题描述】:

我在 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"

这是我的 Dockerfile

FROM node:10.14.0

WORKDIR /user/src/server

COPY ./ ./

RUN npm install

CMD ["/bin/bash"]

【问题讨论】:

    标签: postgresql docker docker-compose knex.js


    【解决方案1】:

    在 docker-compose.yml 文件中,使用 sh (bash) 作为包含的环境上下文,以便您的命令在其中运行。即。 sh -c 'npm 运行数据库' 你的 docker-compose 文件现在是 其次,使用depends_on步骤等待数据库启动

    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
    

    【讨论】:

      【解决方案2】:

      只需将depends_on 添加到服务器服务即可解决问题。

      services:
          server:
              depends_on:
                  - postgres
              ...
      

      这将导致 docker-compose 在服务器容器之前启动 postgres 容器。然而,它不会等待 postgres 准备好。在这种情况下应该没问题,因为 postgres 启动非常快。

      如果您想要更可靠的东西,或者depends_on 不能解决问题,您可以将入口点包装脚本添加到您的容器中。请参阅https://docs.docker.com/compose/startup-order/,您可以在其中阅读更多相关信息。还有工具链接,因此您不必从头开始编写自己的脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-05
        • 2018-08-21
        • 2021-12-29
        • 2018-10-16
        • 1970-01-01
        • 2020-01-03
        • 1970-01-01
        • 2020-04-27
        相关资源
        最近更新 更多