Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在停靠的django应用程序中访问生产中的Pgadmin4_Django_Postgresql_Amazon Web Services_Docker - Fatal编程技术网

在停靠的django应用程序中访问生产中的Pgadmin4

在停靠的django应用程序中访问生产中的Pgadmin4,django,postgresql,amazon-web-services,docker,Django,Postgresql,Amazon Web Services,Docker,我不确定这会有多大意义,但我正在学习docker使用Gunicorn+Nginx+AWS部署Django应用程序。 到目前为止,它运行良好,我已经在生产中对它进行了单元测试。 我的问题是现在如何访问pgAdmin4 docker compose.staging.yml version: '3.8' # networks: # public_network: # name: public_network # driver: bridge services: web:

我不确定这会有多大意义,但我正在学习docker使用Gunicorn+Nginx+AWS部署Django应用程序。 到目前为止,它运行良好,我已经在生产中对它进行了单元测试。 我的问题是现在如何访问pgAdmin4

docker compose.staging.yml

version: '3.8'

# networks: 
#   public_network:
#     name: public_network
#     driver: bridge

services:
  web:
    build: 
      context: .
      dockerfile: Dockerfile.prod
    # image: <aws-account-id>.dkr.ecr.<aws-region>.amazonaws.com/django-ec2:web
    command: gunicorn djangotango.wsgi:application --bind 0.0.0.0:8000
    volumes:
      # - .:/home/app/web/
      - static_volume:/home/app/web/static
      - media_volume:/home/app/web/media    
    expose:
      - 8000
    env_file:
      - ./.env.staging
    networks: 
      service_network:
 
  db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - ./.env.staging.db
    networks: 
      service_network:
    # depends_on: 
    #   - web
  
  pgadmin:
    image: dpage/pgadmin4
    env_file: 
      - ./.env.staging.db
    ports:
      - "8080:80"
    volumes:
      - pgadmin-data:/var/lib/pgadmin
    depends_on: 
      - db
    links: 
      - "db:pgsql-server"
    environment: 
      - PGADMIN_DEFAULT_EMAIL=pgadmin4@pgadmin.org
      - PGADMIN_DEFAULT_PASSWORD=fakepassword
      - PGADMIN_LISTEN_PORT=80
    networks: 
      service_network:

  nginx-proxy:
    build: nginx
    # image: <aws-account-id>.dkr.ecr.<aws-region>.amazonaws.com/django-ec2:nginx-proxy
    restart: always
    ports:
      - 443:443  
      - 80:80
    networks: 
      service_network:
    volumes:
      - static_volume:/home/app/web/static
      - media_volume:/home/app/web/media 
      - certs:/etc/nginx/certs
      - html:/usr/share/nginx/html
      - vhost:/etc/nginx/vhost.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
    depends_on:
      - web

  nginx-proxy-letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    env_file:
      - .env.staging.proxy-companion
    networks: 
      service_network:
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - certs:/etc/nginx/certs
      - html:/usr/share/nginx/html
      - vhost:/etc/nginx/vhost.d
    depends_on:
      - nginx-proxy
  
networks: 
  service_network:
   
volumes:
  postgres_data:
  pgadmin-data:
  static_volume:
  media_volume:
  certs:
  html:
  vhost:

版本:“3.8”
#网络:
#公共网络:
#名称:公共网络
#司机:驾驶台
服务:
网状物:
建造:
上下文:。
dockerfile:dockerfile.prod
#图片:.dkr.ecr..amazonaws.com/django-ec2:web
命令:gunicorndjangotango.wsgi:application--bind 0.0.0.0:8000
卷数:
#-.:/home/app/web/
-静态卷:/home/app/web/static
-媒体\卷:/home/app/web/media
揭露:
- 8000
环境文件:
-./.env.staging
网络:
服务网络:
db:
图片:postgres:12.0-1
卷数:
-postgres_数据:/var/lib/postgresql/data/
环境文件:
-./.env.staging.db
网络:
服务网络:
#取决于:
#-网络
pgadmin:
图片:dpage/pgadmin4
环境文件:
-./.env.staging.db
端口:
- "8080:80"
卷数:
-pgadmin数据:/var/lib/pgadmin
取决于:
-分贝
链接:
-“db:pgsql server”
环境:
-PGADMIN\u默认\u电子邮件=pgadmin4@pgadmin.org
-PGADMIN_默认_密码=伪造密码
-PGADMIN_侦听_端口=80
网络:
服务网络:
nginx代理:
构建:nginx
#图片:.dkr.ecr..amazonaws.com/django-ec2:nginx代理
重新启动:始终
端口:
- 443:443  
- 80:80
网络:
服务网络:
卷数:
-静态卷:/home/app/web/static
-媒体\卷:/home/app/web/media
-证书:/etc/nginx/certs
-html:/usr/share/nginx/html
-vhost:/etc/nginx/vhost.d
-/var/run/docker.sock:/tmp/docker.sock:ro
标签:
-“com.github.jrcs.letsencrypt\u nginx\u proxy\u companion.nginx\u proxy”
取决于:
-网
nginx proxy letsencrypt:
图片:jrcs/letsencrypt nginx代理伴侣
环境文件:
-.env.staging.proxy-companion
网络:
服务网络:
卷数:
-/var/run/docker.sock:/var/run/docker.sock:ro
-证书:/etc/nginx/certs
-html:/usr/share/nginx/html
-vhost:/etc/nginx/vhost.d
取决于:
-nginx代理
网络:
服务网络:
卷数:
postgres_数据:
pgadmin数据:
静态容量:
媒体卷:
证书:
html:
vhost:
我可以通过域名xyz.example.com访问django应用程序。我刚刚在这里展示了docker的写作。 在本地,我还可以通过localhost:8080访问pgadmin4

有可能在生产中这样做吗?如果是,怎么做?
我会使用AWS RDS作为数据库,但现在我的数据库在docker容器中,所以我正在考虑现在如何访问它?

我找到了一些文档

访问pgadmin页面的url将在nginx中配置。这个例子:

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name _;

    ssl_certificate /etc/nginx/server.cert;
    ssl_certificate_key /etc/nginx/server.key;

    ssl on;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    location /pgadmin4/ {
        proxy_set_header X-Script-Name /pgadmin4;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $host;
        proxy_pass http://localhost:5050/;
        proxy_redirect off;
    }
}
我在这里看到的重要部分是location/pgadmin4/重定向到localhost:5050。在您的情况下,应该是localhost:8080

在您的另一篇文章中,似乎包含了nginx配置:

我建议增加一节,如:


    location /pgadmin4/ {
        proxy_set_header X-Script-Name /pgadmin4;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $host;
        proxy_pass http://localhost:8080/;
        proxy_redirect off;
    }

它可能不是您需要添加的唯一配置。。。我只浏览了一下文件。我相信这个链接可能会帮助你更多,如果这不做的把戏


    location /pgadmin4/ {
        proxy_set_header X-Script-Name /pgadmin4;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $host;
        proxy_pass http://localhost:8080/;
        proxy_redirect off;
    }