我有兩個容器 - “node.js”和“mysql”,它們都設定為位於同一網路上。執行 docker-compose up -d 會啟動容器並且它們正在工作,我可以從外部分別存取“node.js”和“mysql”。
但是我無法從“node.js”連接到“mysql”。我在這裡做錯了什麼嗎?
version: '3' services: app: build: context: . dockerfile: Dockerfile env_file: .env volumes: - .:/app ports: - ${APP_PORT}:${APP_PORT} depends_on: - mysql networks: - appnet mysql: image: mysql:8.0 restart: always env_file: .env environment: - MYSQL_ROOT_HOST=% - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} - MYSQL_DATABASE=${DB_NAME} - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - mysql-data:/var/lib/mysql ports: - ${DB_PORT}:${DB_PORT} networks: - appnet networks: appnet: volumes: mysql-data:
為了連接到 MySQL,我使用了「knex.js」包,它在我的本機電腦上運作良好(相同的 docker 配置)
應該在可能建置得很糟糕的環境層級上看到,這裡有一個包含 docker-compose 的連結:
https://varsubham.medium.com/nodejs-mysql-docker -compose-ad156cd0c885
希望這對你有幫助