我正在嘗試設置一個nginx容器,作爲我安裝的另一個容器的代理。我想自動執行此設置,因爲我需要在多個服務器上部署類似的設置。爲此,我使用Ansible。使用Ansible在Docker中設置Nginx代理使用Ansible
這裏是我的nginx.conf
:
events {
worker_connections 1024;
}
http {
server {
listen 8080;
location/{
proxy_pass http://192.168.1.14:9000;
}
}
}
這裏是我的Ansible YAML文件的相關部分:
- name: Install Nginx
docker:
name: nginx
image: nginx
detach: True
ports:
- 8080:8080
volumes:
- /etc/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
當我第一次運行我的劇本,Nginx的運行,但不會綁定到8080
如在這裏看到的:
6a4f610e86d nginx "nginx -g 'daemon off" 35 minutes ago Up Less than a second 80/tcp, 443/tcp nginx
但是,如果我運行nginx容器直接:
docker run -d -v /etc/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -p 8080:8080 nginx
nginx的和我的代理服務器運行正常並監聽8080
:
c3a46421045c nginx "nginx -g 'daemon off" 2 seconds ago Up 1 seconds 80/tcp, 443/tcp, 0.0.0.0:8080->8080/tcp determined_swanson
任何想法,爲什麼它的工作的一種方式而不是其他?
更新
每所選擇的答案中給出的指導下,我更新了我的YAML文件正是如此:
- name: Install Nginx
docker:
name: nginx
image: nginx
detach: True
ports:
- 8080:8080
expose:
- 8080
volumes:
- /etc/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
謝謝 - 我繼續嘗試了引號,以確保公正,但它仍然沒有綁定到端口8080。任何其他想法? – Julio
@Louis你需要確保你的nginx鏡像不會影響端口8080 – VonC
Yup'expose'正是我所需要的。如果你想更新你的答案,我會接受它。 – Julio