NodeJSはMySQLの最新バージョンまたは8以降に接続できず、次のエラーメッセージが表示されます。
ERROR: connect ECONNREFUSED 172.21.0.2:3306
これが私のdocker-composeファイルです
version: '2.1'
services:
db:
build: ./db
networks:
- ppshein
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
healthcheck:
test: "exit 0"
node:
build: ./app
depends_on:
db:
condition: service_healthy
ports:
- 3000:3000
networks:
- ppshein
networks:
ppshein:
これがdbDockerfilesです
FROM mysql:5
COPY init_db.sql /docker-entrypoint-initdb.d/
init_db.sql
CREATE DATABASE IF NOT EXISTS database_docker;
GRANT ALL PRIVILEGES on database_docker.*
TO 'root'@'%' IDENTIFIED BY 'ppshein123456'
WITH GRANT OPTION;
NodeJS Dockerfile
FROM node:9.10.1
ENV NODE_ENV=docker
COPY ./ /var/www
WORKDIR /var/www/
RUN yarn install && yarn add sequelize-cli -g
EXPOSE 3000
ENTRYPOINT [ "npm", "run", "docker" ]
Config.json
"docker": {
"username": "root",
"password": "ppshein123456",
"database": "database_docker",
"host": "db",
"dialect": "mysql",
"logging": false
}
しかし、に変更しFROM mysql:5
たときはすべてが機能しているファイルですが、FROM mysql
またはFROM mysql:8
、上記のエラーが発生しました。どのような構成を見逃す必要があるか教えてください。
その認証の問題を修正する方法を見つけました。私は、以下のコマンドを追加する必要がある--default-authentication-plugin=mysql_native_password
とMYSQL_ROOT_PASSWORD=ppshein123456
上のdocker-compose
ファイル。
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=ppshein123456
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加