首頁  >  問答  >  主體

Docker compose:mariadb 的 getaddrinfo 失敗

我不擅長建立 docker-compose,目前在嘗試建置新專案時遇到問題。

建置後,我無法存取 php 應用程式容器中的 mariadb 伺服器,出現此錯誤:

PDO::__construct(): php_network_getaddresses: mariadb 的 getaddrinfo 失敗:名稱無法解析

所以我知道有些東西配置錯誤,但我還不知道是什麼。我嘗試了很多改變,但沒有任何效果。

這是我目前的 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: {}

有人可以幫我解決這個問題嗎?

謝謝!

P粉564301782P粉564301782207 天前326

全部回覆(1)我來回復

  • P粉482108310

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

    問題與我的 docker-compose 設定檔無關。

    我的應用程式是一個 PHP Symfony 應用程序,它在構建期間的初始“composer 安裝”之後執行“快取:清除”。 「cache:clear」正在觸發對尚未準備就緒的資料庫的呼叫。 為了解決這個問題,我只需將我的 mariadb 版本設定為我的 Symfony 應用程式中的「DATABASE_URL」參數,以避免無用的資料庫查詢。

    回覆
    0
  • 取消回覆