如何将phpmyadmin添加到Laravel8航行docker-compose.yml

我正在尝试添加phpmyadminLaravel 8 docker-compose.yml文件。

现在,我可以phpmyadmin在“http://localhost:8080”上访问,但没有用户无法登录

Cannot log in to the MySQL server

mysqli::real_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known

mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known

我的docker-compose.yml文件看起来像这样:

# For more information: https://laravel.com/docs/sail
version: "3"
services:
  laravel.test:
    build:
      context: ./vendor/laravel/sail/runtimes/8.0
      dockerfile: Dockerfile
      args:
        WWWGROUP: "${WWWGROUP}"
    image: sail-8.0/app
    ports:
      - "${APP_PORT:-80}:80"
    environment:
      WWWUSER: "${WWWUSER}"
      LARAVEL_SAIL: 1
    volumes:
      - ".:/var/www/html"
    networks:
      - sail
    depends_on:
      - mysql
      # - pgsql
      - redis
      # - selenium
  # selenium:
  #     image: 'selenium/standalone-chrome'
  #     volumes:
  #         - '/dev/shm:/dev/shm'
  #     networks:
  #         - sail
  mysql:
    image: "mysql:8.0"
    ports:
      - "${FORWARD_DB_PORT:-3306}:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
      MYSQL_DATABASE: "${DB_DATABASE}"
      MYSQL_USER: "${DB_USERNAME}"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    volumes:
      - "sailmysql:/var/lib/mysql"
    networks:
      - sail
    healthcheck:
      test: ["CMD", "mysqladmin", "ping"]
  #    pgsql:
  #        image: postgres:13
  #        ports:
  #            - '${FORWARD_DB_PORT:-5432}:5432'
  #        environment:
  #            PGPASSWORD: '${DB_PASSWORD:-secret}'
  #            POSTGRES_DB: '${DB_DATABASE}'
  #            POSTGRES_USER: '${DB_USERNAME}'
  #            POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
  #        volumes:
  #            - 'sailpostgresql:/var/lib/postgresql/data'
  #        networks:
  #            - sail
  redis:
    image: "redis:alpine"
    ports:
      - "${FORWARD_REDIS_PORT:-6379}:6379"
    volumes:
      - "sailredis:/data"
    networks:
      - sail
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
  # memcached:
  #     image: 'memcached:alpine'
  #     ports:
  #         - '11211:11211'
  #     networks:
  #         - sail
  mailhog:
    image: "mailhog/mailhog:latest"
    ports:
      - "${FORWARD_MAILHOG_PORT:-1025}:1025"
      - "${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025"
    networks:
      - sail

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - mysql:mysql
    ports:
      - 8080:80
    environment:
      MYSQL_USERNAME: "${DB_USERNAME}"
      MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
      PMA_HOST: mysql

networks:
  sail:
    driver: bridge
volumes:
  sailmysql:
    driver: local
  #    sailpostgresql:
  #        driver: local
  sailredis:
    driver: local

回答

为了让容器相互通信,它们必须在同一个 Docker 网络上。您已将mysql容器显式分配给networks: [sail],但phpmyadmin容器不在该网络上。你可以加

services:
  phpmyadmin:
    networks:
      - sail

Compose 还提供了一个以default您命名的网络(有关更多详细信息,请参阅Compose 中的网络)。如果您没有明确指定networks:服务,那么它将在default网络上。另一种解决方案可能是删除networks:文件中随处可见的所有块,让每个容器都在default网络上。

links: 仅用于过时的 Docker 网络形式,您也可以删除文件的该部分。


以上是如何将phpmyadmin添加到Laravel8航行docker-compose.yml的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>