docker -compose.yml
version: '3.8'
services:
stage:
container_name: xxx-website-stage
image: registry.gitlab.com/xxx.us/website:latest
build:
context: .
target: stage
dockerfile: Dockerfile
ports:
- '3002:80'
restart: always
default.conf
upstream staging-xxx-us {
server 0.0.0.0:3002;
}
server {
listen 3002;
server_name localhost;
# ...
}
server {
listen 80;
server_name staging.xxx.us;
location / {
proxy_pass http://staging-xxx-us;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}
sudo docker ps
xxxxxxxxxxxx registry.gitlab.com/xxx.us/website:latest "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:3002->80/tcp xxx-website-stage
sudo ufw status пронумерован
Status: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 80/tcp ALLOW IN Anywhere
[ 4] 443/tcp ALLOW IN Anywhere
[ 5] OpenSSH (v6) ALLOW IN Anywhere (v6)
[ 6] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 443/tcp (v6) ALLOW IN Anywhere (v6)
sudo netstat -ltnp | grep: *
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12088/nginx: master
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 680/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1534/sshd
tcp6 0 0 :::80 :::* LISTEN 12088/nginx: master
tcp6 0 0 :::22 :::* LISTEN 1534/sshd
tcp6 0 0 :::3002 :::* LISTEN 28198/docker-proxy
Все работает нормально с портом 3001, но ничего не работает с любыми портами (например, 3002). Я изменяю порты в docker-compose.yml
на <anything>:80
и default.conf
, чтобы они указывали на <anything>
в блоке upstream
.