如何修复 docker-compose.yml 中的续集“npx Sequelize-cli db:migrate”?

问题描述 投票:0回答:1

我面对

Sequelize CLI [节点:21.7.1,CLI:6.6.2,ORM:6.37.1] | |已加载配置文件“database/config/config.json”。 |使用环境“生产”。 |错误:用户“root”@“172.21.0.3”的访问被拒绝(使用密码:YES)

设置

.env.production
并应用命令
sudo docker compose --env-file ./.env.production up --build

这是我的

docker-compose.yml

version: '3.8'

networks:
  common:
    driver: bridge

services:
  db:
    networks: 
      - common
    container_name: database
    volumes:
      - mysql_data:/var/lib/mysql
    restart: on-failure
    ports:
      - 3306:3306
    build:
      context: .
      dockerfile: Dockerfile.mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-p$MYSQL_ROOT_PASSWORD"]
      interval: 1s
      retries: 120
      
  adminer:
    image: adminer
    restart: always
    container_name: adminer-g-database
    links:
      - db:db
    ports:
      - 8080:8080
    
  app:
    networks:
      - common
    build:
      context: .
      dockerfile: Dockerfile.app
    container_name: g-app
    restart: always
    links:
      - db:db
    ports:
      - 3000:3000
    depends_on:
      db: 
        condition: service_healthy

    command: sh -c "npx sequelize-cli db:migrate && npm install && npm run build && npm start"
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules

volumes:
  mysql_data:
    driver: local

这是我的

Dockerfile
Docker.mysql

#Create MySQL
FROM mysql

LABEL name=gel

EXPOSE 3306

这是 nextJS 应用程序,尝试通过运行 mysql 容器并应用sequelize 迁移命令来构建应用程序。预先感谢

mysql docker next.js docker-compose sequelize-cli
1个回答
0
投票

这是一个可以帮助您入门的最小工作设置。

├── config
│   └── config.json
├── docker-compose.yml
├── Dockerfile.app
├── migrations
└── package.json

migrations
文件夹对我来说是空的。

🗎

config.json
(我已将其设置为开发环境,但一旦您可以使用它,您就可以更改为生产环境。)

{
    "development": {
      "username": "root",
      "password": "password",
      "database": "mysql",
      "host": "db",
      "dialect": "mysql"
    }
  }

🗎

docker-compose.yml

version: '3.8'

services:
  db:
    image: mysql
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: password
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-p$MYSQL_ROOT_PASSWORD"]
      interval: 1s
      retries: 120

  app:
    build:
      context: .
      dockerfile: Dockerfile.app
    links:
      - db:db
    ports:
      - 3000:3000
    depends_on:
      db:
        condition: service_healthy

🗎

Dockerfile.app

FROM node:16

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

RUN npm run build

CMD ["sh", "-c", "npx sequelize-cli db:migrate && npm start"]

🗎

package.json
start
脚本只是一个占位符。)

{
    "name": "test",
    "version": "1.0.0",
    "description": "",
    "scripts": {
      "build": "echo 'Build script not defined'",
      "start": "echo 'Start here...'"
    },
    "dependencies": {
      "express": "^4.17.1",
      "mysql2": "^2.3.0",
      "sequelize": "^6.6.5", 
      "sequelize-cli": "^6.2.0"
    },
    "devDependencies": {
    }
  }

© www.soinside.com 2019 - 2024. All rights reserved.