请检查我的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

现在有两个容器正在运行:
docker容器抛出错误: php_network_getaddresses: getaddrinfo failed: Name or service not known-LMLPHP

两个容器的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

我不明白出了什么问题。

最佳答案

我看到您的“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

10-01 13:03
查看更多