创建两个容器,一个包含flask web 应用程序,另一个安装了MySql。第一台服务器中的 Web 应用需要访问另一台服务器中的数据库。
docker-compose.yml 文件
web 和 db 容器在撰写文件中链接。
version: '3'
services:
web:
container_name: "web"
build:
context: .
dockerfile: ./build/web_build
links:
- db
ports:
- "5000:5000"
db:
container_name: "mysql"
build:
context: .
dockerfile: ./build/db_build
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 'root'
MYSQL_DATABASE: 'password'
MYSQL_USER: 'root'
volumes:
- ./db:/docker-entrypoint-initdb.d/:ro
- ./data:/data
我正在运行的容器
这就是 web 容器的 hosts 文件的样子
root@9ee63128f6db:/code# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
**172.31.0.3 9ee63128f6db**
以及db容器上的hosts文件
root@9acbf1743dca:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.31.0.2 9acbf1743dca
文件/etc/mysql/my.cnf
在 Web 容器上安装 Maria db 只是为了检查连接。
apt install mariadb-server
DB 容器的 IP 是 172.31.0.2。当我尝试连接时出现以下错误
root@9ee63128f6db:/code# mysql -u root -p'root' 172.31.0.2
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我已经完成了这个 Access to mysql container from other container 但它没有帮助。
mysqld 服务也不可用。