postgresql - 使用 Docker Compose Psql 进行 Knex 迁移
问题描述
我在 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"]
解决方案
在 docker-compose.yml 文件上,使用 sh (bash) 作为包含的环境上下文,以便您的命令在其中运行。即。sh -c 'npm run db' 你的 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
推荐阅读
- excel - 如何在 VBA 的 Range.Formula 中包含变量?
- angular - 加载外部模板
- c# - 如何在机器人处理操作时向用户发送“等待”?
- c# - 从实现类调用 C# 接口默认方法
- java - MapView ist abstract - 无法实例化
- pandas - 如何在熊猫中将行值组合成新行
- javascript - 如何将 Map 值设置为数组?
- spring - 使用 Postman 为 Spring Boot 发布请求返回 404
- api - 有什么方法可以从 Facebook Search Places API 获取随机位置?
- c# - 将列表列表绑定到 ListView 并将它们分组