[英]Using sequelize-cli with docker-compose
I'm starting to use Docker and I have some questions about build a project using nodejs, sequelize-cli and postgres.我开始使用 Docker 并且我对使用 nodejs、sequelize-cli 和 postgres 构建项目有一些疑问。
How can I do to exec npx sequelize-cli db:migrate inside the container?如何在容器内执行npx sequelize-cli db:migrate ?
My Dockerfile:我的 Dockerfile:
FROM node:alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]
And my docker-compose:还有我的 docker-compose:
version: '3'
volumes:
data:
services:
db:
image: postgres:9.6
env_file: .env
volumes:
- data:/var/lib/postgres/data
environment:
- POSTGRES_USER=$DB_USE
- POSTGRES_PASSWORD=$DB_PASSWORD
- POSTGRES_DB=$DB_NAME
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- /app/node_modules
- .:/app
Thanks all.谢谢大家。
you need to add an entrypoint.sh to run npm commands, something like this:您需要添加一个 entrypoint.sh 来运行 npm 命令,如下所示:
# docker-compose.yml
version: '3'
services:
app:
entrypoint: ["/bin/bash", "./entrypoint.sh"]
image: node:10.12.0
ports:
- "3000:3000"
and with sequelize-cli in your package.json:并在 package.json 中使用 sequelize-cli:
# entrypoint.sh
npm install
npx sequelize-cli db:migrate
In your Dockerfile add:在您的 Dockerfile 添加:
...
CMD [ "npx", "sequelize", "db:migrate" ]
CMD ["npm", "run", "dev"]
In your Dockerfile you can add:在您的 Dockerfile 中,您可以添加:
RUN npm install -g sequelize-cli
and then docker exec app sequelize db:migrate --env production
然后
docker exec app sequelize db:migrate --env production
just run docker-compose run --rm app npx sequelize-cli db:migrate
只需运行
docker-compose run --rm app npx sequelize-cli db:migrate
or... if you have the service already running, you could simply login to the container ( docker-compose exec app bash
) and run the command inside your running container ( npx sequelize-cli db:migrate
)或者...如果您的服务已经在运行,您可以简单地登录到容器(
docker-compose exec app bash
)并在正在运行的容器中运行命令( npx sequelize-cli db:migrate
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.