[英]Docker-compose: Connect to database using localhost & mysql as hostname
[英]Unable to connect phpmyadmin to database using docker compose
可能是這個問題之前被問過幾次,但我沒有得到可以解決我的問題的有效答案。
我正在嘗試使用docker-compose
在不同容器上的 docker 中運行 phpmyadmin,但它總是通過以下錯誤:
#2002 - 連接被拒絕 - 服務器沒有響應(或者本地服務器的套接字沒有正確配置)。
我的 docker compose 文件包含以下代碼:
version: "2"
services:
web:
build: .
ports:
- "80:80"
networks:
- web
volumes:
- .:/code
restart: always
db:
image: "mysql:5"
volumes:
- ./mysql:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD: toor
MYSQL_DATABASE: phpapp
networks:
- web
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_PORT: 3306
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: toor
ports:
- "8000:80"
restart: always
networks:
- web
networks:
web:
driver: bridge
在web
容器中,我試圖連接數據庫並且它工作正常,但是phpmyadmin
連接出現問題
任何幫助,將不勝感激。 :)
現在您需要向 mysql 服務添加命令以連接到 phpmyadmin。
命令:--default-authentication-plugin=mysql_native_password
version: "2"
services:
db:
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: drupal
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- ./dump:/docker-entrypoint-initdb.d
- /var/lib/mysql
networks:
- default
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8000:80
environment:
PMA_HOST: db
MYSQL_USER: user
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
有趣的是,我已經運行了您的撰寫文件,並且可以從主機訪問 phpmyadmin。
不過不得不將端口 8000 更改為 8004(端口 8000 在我的主機上被占用)。
如果您的 db-container 啟動速度不足以讓 phpmyadmin 連接,我建議將depends_on添加到 phpmyadmin 服務中。 確保 db 在 phpmyadmin 之前啟動。
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_PORT: 3306
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: toor
ports:
- "8004:80"
restart: always
depends_on:
- db
networks:
- web
如果問題仍然存在,請顯示來自docker-compose up
日志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.