recherche

Maison  >  Questions et réponses  >  le corps du texte

Docker compose : échec de getaddrinfo de mariadb

Je ne suis pas doué pour créer Docker-compose et j'ai actuellement des problèmes pour essayer de créer un nouveau projet.

Après la construction, je ne peux pas accéder au serveur mariadb dans le conteneur de l'application php, j'obtiens cette erreur :

PDO::__construct() : php_network_getaddresses : getaddrinfo de mariadb Échec : Le nom ne peut pas être résolu

Je sais donc que quelque chose est mal configuré, mais je ne sais pas encore quoi. J'ai essayé de nombreux changements mais rien n'a fonctionné.

Voici mon docker-compose.yml actuel :

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: {}

Quelqu'un peut-il m'aider à résoudre ce problème ?

Merci !

P粉564301782P粉564301782241 Il y a quelques jours357

répondre à tous(1)je répondrai

  • P粉482108310

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

    Le problème n'a rien à voir avec mon fichier de configuration docker-compose.

    Mon application est une application PHP Symfony qui effectue un "cache: clear" après la "installation initiale du compositeur" pendant la construction. "cache:clear" déclenche un appel vers une base de données qui n'est pas encore prête. Pour résoudre ce problème, j'ai simplement défini ma version de mariadb sur le paramètre "DATABASE_URL" dans mon application Symfony pour éviter les requêtes inutiles sur la base de données.

    répondre
    0
  • Annulerrépondre