【发布时间】:2022-01-30 22:06:33
【问题描述】:
我有与 API 和 MySQL 数据库一起使用的 Dockerfile,它应该进行迁移:
FROM node
WORKDIR /api
COPY . .
RUN npm install
EXPOSE 3001
VOLUME [ "/api/node_modules" ]
CMD [ "npm", "start" ]
此外,还有一个 docker-compose 文件,我将数据库作为服务:
db:
image: mysql
container_name: database
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_PASSWORD: password
MYSQL_DATABASE: testdb
问题是,我不知道如何运行迁移。我应该从 docker-compose 文件还是 Dockerfile 来做?
我试图在 Dockerfile 中做这样的事情,但它似乎不起作用:
...
CMD [ "knex", "migrate:latest" ]
...
或者:
...
RUN knex migrate:latest
...
【问题讨论】:
-
对于不同的技术堆栈,How do you perform Django database migrations when using Docker-Compose? 中有一些选项的讨论。一般来说,主要的选择是手动
docker-compose run your-app knex migrate:latest,或者设置一个ENTRYPOINT包装脚本在每次启动时自动执行。即使您使用不同的语言/迁移系统,该问题是否有足够的详细信息来帮助您? -
我同意你的看法。我可以创建这样的
ENTRYPOINT脚本,我想这会起作用,但我想只使用 docker 和 docker-compose 工具来实现它。
标签: javascript node.js docker database-migration knex.js