我有两个容器 - “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
希望这对你有帮助