我不擅長建立 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粉4821083102024-03-27 00:23:01
問題與我的 docker-compose 設定檔無關。
我的應用程式是一個 PHP Symfony 應用程序,它在構建期間的初始“composer 安裝”之後執行“快取:清除”。 「cache:clear」正在觸發對尚未準備就緒的資料庫的呼叫。 為了解決這個問題,我只需將我的 mariadb 版本設定為我的 Symfony 應用程式中的「DATABASE_URL」參數,以避免無用的資料庫查詢。