nginx не прослушивает pgadmin в docker на порту, отличном от 80

#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/