`
version: '3.8'
services:
splitpay-app:
build:
context: .
dockerfile: Dockerfile.nodejs
volumes:
- .:/usr/src/app
ports:
- "8080:8080"
depends_on:
- mysql-db
- redis
environment:
DB_DATABASE: ${DB_DATABASE}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
DB_HOST: ${DB_HOST}
SECRET_KEY: ${SECRET_KEY}
networks:
- my-networks
mysql-db:
build:
context: .
dockerfile: Dockerfile.mysql
ports:
- "3301:3306"
expose:
- "3306"
volumes:
- dbdata:/data/db
networks:
- my-networks
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
redis:
build:
context: .
dockerfile: Dockerfile.redis
ports:
- "6379:6379"
networks:
- my-networks
volumes:
dbdata:
networks:
my-networks:
driver: bridge
字符串
`
1条答案
按热度按时间pvcm50d11#
错误消息的IP地址指示您的问题。
Error: ECONNREFUSED 127.0.0.1:3306
。127.0.0.1是localhost。在容器上下文中,localhost是容器本身。因此,您的应用正在尝试连接到应用容器中的数据库。这不起作用。数据库正在另一个容器中运行,其地址与
localhost
不同。要让它连接到数据库容器,您需要使用主机名
mysql-db
而不是localhost
。在应用程序的某个地方(可能是在连接字符串或代码中),数据库地址设置为
localhost
,需要将其更改为mysql-db
。