#docker #nginx #docker-compose #devops #pgadmin
#docker #nginx #docker-compose #devops #pgadmin
Вопрос:
На моем сервере запущено несколько проектов, и я не могу использовать порт 80. В этом Docker все работает нормально, кроме Pgadmin. Независимо от того, сколько я меняю код, я получаю ошибку 502 или ошибку 404 в <SERVER_IP>:8090/pgadmin/
Кто-нибудь может меня направить?
nginx.conf :
upstream app_server {
server gis_app:8095;
}
upstream pg_server {
server gis_pgadmin:5555;
}
server {
listen 8090;
server_name localhost;
client_max_body_size 200M;
location / {
proxy_pass http://app_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_redirect off;
}
location /static/ {
alias /srv/gis/static/;
}
location /media/ {
alias /srv/gis/media/;
}
location /pgadmin/ {
proxy_pass http://pg_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}
docker-compose.yml :
version: '3'
services:
gis_app:
container_name: gis_app
restart: unless-stopped
build: .
volumes:
- .:/srv/gis/src
- gis_static_volume:/srv/gis/static
- gis_media_volume:/srv/gis/media
networks:
- gis_nginx_network
- gis_db_network
- gis_redis_network
depends_on:
- gis_db
- gis_redis
gis_nginx:
image: nginx:latest
container_name: gis_nginx
restart: unless-stopped
ports:
- 8090:8090
volumes:
- ./config/nginx:/etc/nginx/conf.d
- gis_static_volume:/srv/gis/static
- gis_media_volume:/srv/gis/media
depends_on:
- gis_app
networks:
- gis_nginx_network
gis_db:
image: kartoza/postgis
container_name: gis_db
restart: unless-stopped
env_file:
- config/.env
networks:
- gis_db_network
volumes:
- gis_db_volume:/var/lib/postgresql
gis_pgadmin:
image: dpage/pgadmin4
container_name: gis_pgadmin
depends_on:
- gis_db
ports:
- 5555:8090
networks:
- gis_db_network
- gis_nginx_network
env_file:
- config/.env
gis_redis:
image: redis
container_name: gis_redis
command: >
--requirepass password
restart: unless-stopped
networks:
- gis_redis_network
networks:
gis_nginx_network:
driver: bridge
gis_db_network:
driver: bridge
gis_redis_network:
driver: bridge
volumes:
gis_static_volume:
gis_media_volume:
gis_db_volume:
и pgadmin env :
PGADMIN_DEFAULT_EMAIL=mail@info.com
PGADMIN_DEFAULT_PASSWORD=password
PGADMIN_LISTEN_PORT=5555
Ответ №1:
Из-за PGADMIN_LISTEN_PORT=5555
прослушивания порта 5555
Поэтому gis_pgadmin
контейнер должен прослушивать этот порт 5555
Nginx будет перенаправлен с 8090
—> 5555
gis_pgadmin:
image: dpage/pgadmin4
container_name: gis_pgadmin
depends_on:
- gis_db
ports:
- 5555:5555
Комментарии:
1. Я также пробовал порты 5555:5555, 5555:8090, 5555:80 и 5, но это не сработало. docker ps: gis_pgadmin /entrypoint.sh До 443 / tcp, 0.0.0.0: 5555-> 5555 / tcp, 80 / tcp
2. на хосте вы проверили, работает порт 5555
gis_pgadmin
или нет?3. использование
curl ip_address_of_pgadmin 5555
и проверка возврата обратно!4. на локальном хосте: 5555 работает, но теперь работает на сервере, конечно, я хочу, чтобы он запускался на ip: 8090 / pgadmin/