从另一个容器访问 MySQL 容器

时间:2021-02-19 03:52:21

标签: mysql docker docker-compose

创建两个容器,一个包含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

我正在运行的容器

enter image description here

这就是 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

enter image description here

在 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 服务也不可用。

  • MySql 最新版本是从 MySQL docker 镜像中提取的。

0 个答案:

没有答案