Nginx
docker-compose 用於 nginx 和 nodejs 伺服器
我有以下
docker-compose.yml
文件:version: '3' services: server: build: context: ../../ dockerfile: ./packages/website/Dockerfile command: node /cutting/index.js environment: PORT: 8000 NODE_ENV: production restart: always nginx: build: context: ./ dockerfile: ./nginx/Dockerfile command: tail -f /dev/null depends_on: - server ports: - "8000:8000" restart: always
以及以下內容
nginx.conf
:worker_processes 1; user nobody nogroup; pid /tmp/nginx.pid; error_log /tmp/logs/nginx.error.log; events { worker_connections 1024; accept_mutex off; } http { include mime.types; default_type application/octet-stream; access_log /tmp/logs/nginx.access.log combined; sendfile on; server { proxy_http_version 1.1; # this is essential for chunked responses to work listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default ipv6only=on; ## listen for ipv6 client_max_body_size 4G; server_name frontend; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types application/javascript text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; keepalive_timeout 5; location /static/ { alias /static/; } location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; # UNCOMMENT LINE BELOW IF THIS IS BEHIND A SSL PROXY #proxy_set_header X-Forwarded-Proto https; proxy_redirect off; proxy_pass http://localhost:8000; } } }
如果這創建了 2 個容器,我怎樣才能讓 nginx 在另一個容器上看到 localhost:8000?
您可以使用在 中
name
定義的容器docker-compose.yml
。Docker 通過每個容器內的 DNS 為命名容器提供 IP 地址,並在容器更新時更新它們。在這種情況下,您呼叫了它
server
,因此您將使用它。proxy_pass http://server:8000;
文件:Compose 中的網路
在這種情況下,您需要使用上游,例如:
upstream backend { server express-server:81; #you container/service name }
然後使用:
proxy_pass http://backend