suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Docker Compose: Getaddrinfo von Mariadb ist fehlgeschlagen

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粉564301782P粉564301782276 Tage vor395

Antworte allen(1)Ich werde antworten

  • P粉482108310

    P粉4821083102024-03-27 00:23:01

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

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

    Antwort
    0
  • StornierenAntwort