【发布时间】:2020-06-07 05:45:26
【问题描述】:
我遇到了与 Run MySQL on Port 3307 Using Docker Compose 类似的问题,但要么我看不到树木的木材,要么这里的解决方案不起作用。
我有以下 docker-compose.yml 文件:
version: '3'
services:
db:
image: mysql:5.7
container_name: squirrels_db
volumes:
- db_data:/var/lib/docker/volumes/squirrels_db_data/_data
restart: always
ports:
# <Port exposed> : <MySQL Port running inside container>
- 3310:3306
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: mydb_user
MYSQL_PASSWORD: password
volumes:
- ./var/lib/docker/volumes/squirrels_db_data/_data
networks:
internal-net:
ipv4_address: 172.29.0.11
wordpress:
image: wordpress:latest
container_name: squirrels_web
depends_on:
- db
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: mydb_user
WORDPRESS_DB_NAME: mydb_name
WORDPRESS_DB_PASSWORD: password
volumes:
- ./data/wp_content:/var/www/html/wp-content
- ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
networks:
nginx-proxy:
internal-net:
ipv4_address: 172.29.0.12
# Names our volume
volumes:
db:
networks:
nginx-proxy:
external:
name: nginx-proxy
internal-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.29.0.0/16
注意:我在这里更改了用户名和密码,最终会将它们保存在 .env 文件中
当我点击http://localhost:8000 时,我在日志中看到一条 WordPress 传递的“建立数据库连接时出错”消息和以下内容(来自 docker-compose 日志):
PHP 警告:mysqli::__construct(): (HY000/2002): 连接被拒绝 在第 22 行的标准输入代码中 MySQL 连接错误:(2002) 连接被拒绝
这现在正式让我发疯了,仅仅知道我错过了一些明显的东西就没有任何帮助!因此,任何意见或建议都非常感谢
谢谢
【问题讨论】:
-
我应该补充一点,我可以使用以下命令从命令行手动连接到 mysql:mysql -u mydb_user -p -h 172.29.0.11
-
我怀疑
WORDPRESS_DB_HOST: db:3306行是一个问题,因为它包含:两次。你能在不同的行中说明端口吗? -
我从这篇文章docs.docker.com/compose/wordpress得到那句话