我面对
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 迁移命令来构建应用程序。预先感谢
这是一个可以帮助您入门的最小工作设置。
├── 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": {
}
}