简体   繁体   English

使用带有 docker-compose 的 sequelize-cli

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM