nginx和wordpress不同的docker组合文件
我正在尝试将多个docker compose文件与一个nginx docker compose文件连接 例如,此设置非常有效(我在运行之前创建了网络): (我知道这个例子是多余的,因为我有两台nginx服务器)nginx和wordpress不同的docker组合文件,wordpress,docker,nginx,docker-compose,Wordpress,Docker,Nginx,Docker Compose,我正在尝试将多个docker compose文件与一个nginx docker compose文件连接 例如,此设置非常有效(我在运行之前创建了网络): (我知道这个例子是多余的,因为我有两台nginx服务器) 我运行容器,一切都按预期进行。我的网站是通过myapp.local代理的 但是。当我将静态网站更改为wordpress图像时,如下所示: #wordpress/docker-composer.yml wordpress: image: wordpress contai
我运行容器,一切都按预期进行。我的网站是通过myapp.local代理的 但是。当我将静态网站更改为wordpress图像时,如下所示:
#wordpress/docker-composer.yml
wordpress:
image: wordpress
container_name: app_web
links:
- db:mysql
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_PASSWORD: example
networks:
- test_network
- test_wordpress_db
db:
image: mysql:5.7
container_name: test.web.db
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ./mysql/data:/var/lib/mysql
networks:
- test_wordpress_db
我再次运行容器(在更新nginx.yml文件之后)。我将请求记录在我的终端(nginx容器,这意味着请求是句柄)中,但作为错误:
test.nginx |[error]5#5:*6 connect()在连接到上游时失败(111:连接被拒绝),客户端:172.23.0.1,服务器:myapp.local,请求:“GET/HTTP/1.1”,上游:http://172.23.0.2:8080/,主机:“myapp.local”
问题是,当我从localhost:8080
访问wordpress应用程序时,它正在工作
此配置中的wordpress应用程序有问题吗?它检测不到我的主人或什么?我怎样才能解决这个问题呢?我想出来了
似乎我必须为我的代理程序使用内部端口,而不是外部端口。例如,对于wordpressdocker compose.yml
文件,我必须这样编写代理:
#nginx/docker-compose.yml
server {
listen 80;
server_name myapp.local;
#Docker DNS
resolver 127.0.0.11;
location / {
set $docker_host "app_web_static";
proxy_pass http://$docker_host:80; # here. the internal wordpress port
}
}
#nginx/docker-compose.yml
server {
listen 80;
server_name myapp.local;
#Docker DNS
resolver 127.0.0.11;
location / {
set $docker_host "app_web_static";
proxy_pass http://$docker_host:8080;
}
}
#wordpress/docker-composer.yml
wordpress:
image: wordpress
container_name: app_web
links:
- db:mysql
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_PASSWORD: example
networks:
- test_network
- test_wordpress_db
db:
image: mysql:5.7
container_name: test.web.db
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ./mysql/data:/var/lib/mysql
networks:
- test_wordpress_db
#nginx/docker-compose.yml
server {
listen 80;
server_name myapp.local;
#Docker DNS
resolver 127.0.0.11;
location / {
set $docker_host "app_web_static";
proxy_pass http://$docker_host:80; # here. the internal wordpress port
}
}