我真的是 Docker 新手。我想使用 docker 部署我的应用程序并使用 docker-compose 来管理我的数据库(建立连接,建立初始架构)。但我真的很困惑如何实现这一目标。这是我的配置代码:
docker-compose.yml
version: '3'
services:
db:
image: mysql
environment:
MYSQL_DATABASE: currency
MYSQL_USER: root
MYSQL_PASSWORD: ''
ports:
- "33061:3306"
web:
build: .
volumes:
- .:/code
ports:
- "3000:3000"
depends_on:
- db
当我运行docker-compose up
时,它拒绝连接数据库:
errno: 'ECONNREFUSED',
web_1 | code: 'ECONNREFUSED',
web_1 | syscall: 'connect',
web_1 | address: '127.0.0.1',
web_1 | port: 3306,
web_1 | fatal: true
请帮忙。谢谢
最佳答案
使用docker networks ,然后将容器放入该网络中。这样他们就可以互相交谈。在容器中,您可以通过其 DNS 名称来调用每个容器,在 Web 容器中,您可以将 mysql 主机称为 db
。请看下面的 docker-compose.yml 文件
version: '3'
services:
db:
image: mysql
environment:
MYSQL_DATABASE: currency
MYSQL_USER: root
MYSQL_PASSWORD: ''
ports:
- "33061:3306"
networks:
- appnet
volumes:
-./my_mysql_data:/var/lib/mysql
web:
build: .
volumes:
- .:/code
ports:
- "3000:3000"
depends_on:
- db
networks:
- appnet
networks:
appnet:
driver: "bridge"
- 您可以使用主机 mysql 连接到 mysql 容器 客户端(Mysql Workbench、SequelPro ..etc),主机:localhost; 端口:33061。然后您可以在那里创建模式!
- 如果你想持久化你的mysql容器的数据, 您可以添加卷,请确保创建 my_mysql_data 文件夹
关于mysql - 在 Docker 中配置 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801207/