docker compose phpmyadmin php_network_getaddresses:getaddrinfo 失败:名称解析暂时失败

C4p*_*bis 7 docker-compose

我正在尝试使用 laravel、mariadb、nginx、redis 和 phpmyadmin 设置一个 docker-pod。laravel webspace 可以正常工作,但是如果我切换到端口 10081(如 docker-compose.yml 中配置的那样),我将无法使用 root 帐户登录。

它说“ mysqli::real_connect(): php_network_getaddresses: getaddrinfo failed: 名称解析暂时失败”

我已经尝试配置一个链接所有容器的“我的网络”,但是如果我正确理解docker,那么已经有一个“默认”网络可以做到这一点。无论如何,它并没有改变错误消息。

这是我完整的 docker-compose 文件

version: "3.8"
services:
  redis:
    image: redis:6.0-alpine
    expose:
      - "6380"

  db:
    image: mariadb:10.4
    ports:
      - "3307:3306"
    environment:
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: laravel
    volumes:
      - db-data:/var/lib/mysql

  nginx:
    image: nginx:1.19-alpine
    build:
      context: .
      dockerfile: ./docker/nginx.Dockerfile
    restart: always
    depends_on:
      - php
    ports:
      - "10080:80"
    networks:
      - default
    environment:
      VIRTUAL_HOST: cockpit.example.de
    volumes:
      - ./docker/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./public:/app/public:ro

  php:
    build:
      target: dev
      context: .
      dockerfile: ./docker/php.Dockerfile
    working_dir: /app
    env_file: .env
    restart: always
    expose:
        - "9000"
    depends_on:
      - composer
      - redis
      - db
    volumes:
      - ./:/app
      - ./docker/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
    links:
      - db:mysql


  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    ports:
      - 10081:80
    restart: always
    environment:
      PMA_HOST : db
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: secret
    depends_on:
      - db
    #user: "109:115"
    links:
      - db:mysql
      
  node:
    image: node:12-alpine
    working_dir: /app
    volumes:
      - ./:/app
    command: sh -c "npm install && npm run watch"

  composer:
    image: composer:1.10
    working_dir: /app
    #environment:
      #SSH_AUTH_SOCK: /ssh-auth.sock
    volumes:
      - ./:/app
      #- "$SSH_AUTH_SOCK:/ssh-auth.sock"
      - /etc/passwd:/etc/passwd:ro
      - /etc/group:/etc/group:ro
    command: composer install --ignore-platform-reqs --no-scripts

volumes:
  db-data:
Run Code Online (Sandbox Code Playgroud)

小智 14

确保您已正确定义phpmyadmin容器的所有属性,在当前情况下缺少-network定义

phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  container_name: phpmyadmin
  restart: always
  ports:
    # 8080 is the host port and 80 is the docker port
     - 8080:80
  environment:
    - PMA_ARBITRARY:1
    - PMA_HOST:mysql
    - MYSQL_USERNAME:root
    - MYSQL_ROOT_PASSWORD:secret
  depends_on:
    - mysql
  networks:
  # define your network where all containers are connected to each other
    - laravel
  volumes:
  # define directory path where you shall store your persistent data and config 
  # files of phpmyadmin 
    - ./docker/phpmyadmin
Run Code Online (Sandbox Code Playgroud)