【发布时间】:2017-04-24 20:31:39
【问题描述】:
我正在尝试通过 Docker 创建一个 WordPress 容器。但我在host 级别安装了NGINX、MySQL 和Let's Encrypt。
所以,我的 Docker Compose 文件是:
wordpress:
image: wordpress:latest
restart: always
net: "host"
environment:
WORDPRESS_DB_HOST: 172.17.0.1:3306
WORDPRESS_DB_NAME: DB_NAME
WORDPRESS_DB_USER: DB_USER
WORDPRESS_DB_PASSWORD: DB_PASSWORD
ports:
- "8080:8080"
volumes:
- /home/ubuntu/wordpress:/var/www/html
我的 NGINX 配置是:
server {
listen 80 443 ssl http2;
server_name domain.com www.domain.com;
# some headers
ssl on;
# some ssl settings
gzip on;
# some gzip settings
# pagespeed and let's encrypt locations
location / {
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
# proxy pass headers
proxy_pass http://172.17.0.1:8080;
}
}
最后,我的ifconfig 输出是:
docker0 Link encap:Ethernet HWaddr 02:24:ad:a2:e8:dd
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::24:adff:fea2:e8dd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:324 errors:0 dropped:0 overruns:0 frame:0
TX packets:334 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:20589 (20.5 KB) TX bytes:10261280 (10.2 MB)
但是当我打开domain.com 时,我被重定向到https://domain.com 和502 Bad Gateway。
docker-compose logs 的一个最终输出:
Attaching to ubuntu_wordpress_1
wordpress_1 | (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
wordpress_1 | (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
wordpress_1 | no listening sockets available, shutting down
wordpress_1 | AH00015: Unable to open logs
所以,我想做的是通过 Docker 将 WordPress 容器化,并且每当有对 80 端口的请求时,将其重定向到 Docker 容器。
限制:
- 我不想对 MySQL 进行 Dockerize 化,这是最终决定。
- 我不想 Dockerize NGINX,因为我个人喜欢使用
http2和pagespeed模块从源代码构建它。
【问题讨论】:
-
让 docker 只监听 8080(你代理的端口)而不是 nginx 监听的 80
-
您好@IgorYavych 我在您发表评论时看到了它,并已修复。但是,我仍然收到
Address already in use错误。所以,什么都没有改变。即使它在 yml 文件中是“8080:8080”,它也会尝试绑定到 0.0.0.0:80 并且它正在被 NGINX 使用。 -
改成
8080:8080后你还有could not bind to address 0.0.0.0:80吗?你试过docker-compose down && docker-compose up?
标签: wordpress nginx docker docker-compose