docker容器抛出错误:php_network_getaddresses:getaddrinfo失败:名称或服务未知

use*_*897 8 docker docker-compose

请检查我的docker-compose文件:

version: '2'
services:
  db:
    image: mysql:latest
    networks:
      app_net:
        ipv4_address: 172.16.238.10
        ipv6_address: 2001:3984:3989::10
    volumes:
      - "./data/db:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress:
    image: wordpress
    links:
     - db
    ports:
      - "8000:80"
    environment:
     - WORDPRESS_DB_PASSWORD=wordpress
    networks:
      app_net:
        ipv4_address: 172.16.238.12
        ipv6_address: 2001:3984:3989::10
    volumes:
     - ./code:/code
     - ./html:/var/www/html


networks:
  app_net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "true"
    ipam:
      driver: default
      config:
      - subnet: 172.16.238.0/24
        gateway: 172.16.238.1
      - subnet: 2001:3984:3989::/64
        gateway: 2001:3984:3989::1
Run Code Online (Sandbox Code Playgroud)

现在两个容器正在运行: 在此处输入图片说明

两个容器的IP地址已正确配置。但是当我连接到http://172.16.238.12:8000/(172.16.238.12-是wordpress的IP地址)时。它说,“无法连接”。

当我检查docker_wordpress_1的日志文件时,显示给我:

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Run Code Online (Sandbox Code Playgroud)

我不明白出了什么问题。

小智 -1

我发现您的“db”部分中没有任何端口映射。(具有相同的网络配置)。
我正在使用以下数据库部分,然后可以建立连接:

db: 
  build: 
   context: .
   dockerfile: ./compose/mysql/Dockerfile
  volumes:
    - mysql_data_dev:/var/lib/mysql
  restart: always
  ports:
    - "3306:3306"
  container_name: typewriter_db
  networks:
    app_net:
      ipv4_address: 172.16.238.10
      ipv6_address: 2001:3984:3989::10
Run Code Online (Sandbox Code Playgroud)