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 !
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.