你好 :) 這是我的 docker compose :
version: "3.8"
services:
web-server:
build: .
volumes:
- ./:/var/www/html/
ports:
- "8000:80"
links:
- "db:db"
db:
image: mysql:5.6
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8001:80"
links:
- "db:db"
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: root
如您所見,當我使用 http://localhost:8001/ 訪問 phpmyadmin 時,我有:
PhpMyAdmin 儀表板
Doctrine Migation 安裝在我的專案中,所以當我嘗試:
./vendor/bin/doctrine-migrations 狀態
錯誤是:
在 AbstractMySQLDriver.php 第 112 行:
驅動程式發生例外:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
在 Exception.php 第 18 行:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo失敗:提供節點名或服務名,或未知
在 PDOConnection.php 第 39 行:
SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo 失敗:提供節點名或服務名,或未知
在 PDOConnection.php 第 39 行:
PDO::__construct() : php_network_getaddresses: getaddrinfo 失敗: nodename 或 servname 提供, 或未知
我的 env 檔案中的連接是:
BDD = pdo-mysql://root:root@db:3306/playlist_maker_multi
我在 docker-compose 上公開了埠 3306,所以我不明白為什么在我的容器之外我無法訪問我的資料庫?
謝謝大家,如果你有解釋。祝你今天過得愉快。卡米爾
uj5u.com熱心網友回復:
您可以嘗試使用此配置運行它嗎
我將 db 服務重命名為mysql,明確添加了一個網路并使您的 php 服務依賴于 mysql,因此它將重新啟動,直到建立連接,以防萬一 php 容器在 mysql 容器之前開始運行
version: "3.8"
services:
web-server:
build: .
volumes:
- ./:/var/www/html/
ports:
- "8000:80"
links:
- "mysql:db"
mysql:
image: mysql:5.6
container_name: db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
networks:
- net
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8001:80"
links:
- "mysql:db"
depends_on:
- mysql
restart: on-failure
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: root
networks:
- net
networks:
net:
driver: bridge
uj5u.com熱心網友回復:
對于在主機上運行但在 Docker 網路之外(即非容器化)需要連接到容器的應用程式,您可以使用localhost代替db,因為 DNS 名稱db僅在 Docker Compose 網路內有效。
和:
mysql:
image: mysql:5.6
container_name: db
ports:
- "3306:3306"
您正在創建從locahost:3306(或者MACHINEIP:3306如果在另一臺機器上)到mysql:3306網路內部服務的路徑。
uj5u.com熱心網友回復:
@clarj,你的意思是這樣嗎?
version: "3.8"
services:
web-server:
build: .
volumes:
- ./:/var/www/html/
ports:
- "8000:80"
links:
- "localhost:db"
mysql:
image: mysql:5.7
container_name: db
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8001:80"
links:
- "localhost:db"
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: root
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328750.html
上一篇:無法弄清楚MYSQL查詢的問題
下一篇:如何從表中洗掉反向重復項?
