Docker Compose: Getaddrinfo von Mariadb ist fehlgeschlagen
P粉564301782
P粉564301782 2024-03-26 10:56:27
0
1
322

Ich bin nicht gut im Erstellen von Docker-Compose und habe derzeit Probleme beim Erstellen eines neuen Projekts.

Nach dem Erstellen kann ich nicht auf den Mariadb-Server im PHP-Anwendungscontainer zugreifen. Ich erhalte die folgende Fehlermeldung:

PDO::__construct(): php_network_getaddresses: getaddrinfo von mariadb Fehler: Name kann nicht aufgelöst werden

Ich weiß also, dass etwas falsch konfiguriert ist, aber ich weiß noch nicht was. Ich habe viele Änderungen versucht, aber nichts hat funktioniert.

Das ist mein aktuelles docker-compose.yml:

version: "3.8"

networks:
  # used by some services (php) to communicate with other docker-compose.yaml
  censored.com:
    external:
      name: censored.com

services:
  app:
    build:
      context: .
      target: symfony_php
      args:
        - secret=id=composerauth,src=${HOME}/.composer/auth.json
    restart: unless-stopped
    healthcheck:
      interval: 10s
      timeout: 3s
      retries: 3
      start_period: 30s
    environment:
      APP_ENV: dev
      HOST: www.censored.lan
    networks:
      - default
      - censored.com
    volumes:
      - ./:/srv/app:rw,cached
      - ./docker/php/conf.d/symfony.dev.ini:/usr/local/etc/php/conf.d/symfony.ini
      - ${HOME}/.composer/auth.json:/root/.composer/auth.json
      # If you develop on Linux, comment out the following volumes to just use bind-mounted project directory from host
      - ./var/cache:/srv/app/cache:rw
      - ./var/log:/srv/app/logs:rw
    depends_on:
      - mariadb

    extra_hosts:
      - www.censored.lan:127.0.0.1

  nginx:
    build:
        context: .
        target: symfony_nginx
        args:
          - secret=id=composerauth,src=${HOME}/.composer/auth.json
    restart: unless-stopped
    depends_on:
      - app
    environment:
      NGINX_DOMAIN: www.censored.lan
    ports:
      - 8001:80
    volumes:
      - ./docker/nginx/templates/dev.conf.template:/etc/nginx/templates/default.conf.template:ro
      - ./docker/nginx/rules/rules.dev.conf:/etc/nginx/rules.conf:ro
      - ./public:/srv/app/public:ro
      - ./src:/srv/app/src:ro

  mariadb:
    image: mariadb:10.7
    environment:
      MYSQL_ROOT_PASSWORD: changeme
      MYSQL_DATABASE: database
      MYSQL_USER: user
      MYSQL_PASSWORD: changeme
    networks:
      - default
      - censored.com
    ports:
      - '3307:3306'
    restart: on-failure
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data: {}

Kann mir jemand helfen, dieses Problem zu lösen?

Danke!

P粉564301782
P粉564301782

Antworte allen(1)
P粉482108310

问题与我的 docker-compose 配置文件无关。

我的应用程序是一个 PHP Symfony 应用程序,它在构建期间的初始“composer 安装”之后执行“缓存:清除”。 “cache:clear”正在触发对尚未准备就绪的数据库的调用。 为了解决这个问题,我只需将我的 mariadb 版本设置为我的 Symfony 应用程序中的“DATABASE_URL”参数,以避免无用的数据库查询。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!