访问docker容器上的phpmyadmin时拒绝连接

访问docker容器上的phpmyadmin时拒绝连接,phpmyadmin,docker-compose,jhipster,Phpmyadmin,Docker Compose,Jhipster,我使用docker compose使用以下app.yml设置我的应用程序: version: '2' services: hdback-app: image: xxxx:0.0.3 environment: - SPRING_PROFILES_ACTIVE=prod,swagger - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/sample?useUnicode=t

我使用docker compose使用以下app.yml设置我的应用程序:

version: '2'
services:
    hdback-app:
        image: xxxx:0.0.3
        environment:
            - SPRING_PROFILES_ACTIVE=prod,swagger
            - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/sample?useUnicode=true&characterEncoding=utf8&useSSL=false
            - JHIPSTER_SLEEP=10 # gives time for the database to boot before the application
            - SPRING_DATA_ELASTICSEARCH_CLUSTER_NODES=sample-elasticsearch:9300
        ports:
            - 8080:8080
    db:
        extends:
            file: mysql.yml
            service: db
    nginx:
        extends:
            file: nginx.yml
            service: nginx
    hdback-elasticsearch:
        extends:
            file: elasticsearch.yml
            service: hdback-elasticsearch
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        depends_on:
            - db
        ports:
            - 8081:8081
该应用程序安装在Centos 7上,nginx.yml如下所示:

services:
    nginx:
        image: nginx:1.14.0
        volumes:
            - ./../www:/usr/share/nginx/html
            - ./nginx/site.conf:/etc/nginx/conf.d/default.conf
        ports:
            - "80:80"
server {
    listen 80;
    index index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;

    location / {
        root /usr/share/nginx/html;
    }
    location /api {
        proxy_pass http://www.sample.com:8080/api;
    }
    location /management {
        proxy_pass http://www.sample.com:8080/management;
    }
    location /v2 {
       proxy_pass http://www.sample.com:8080/v2;
    }
    location /swagger-ui {
        proxy_pass http://www.sample.com:8080/swagger-ui;
    }
    location /swagger-resources {
        proxy_pass http://www.sample.com:8080/swagger-resources;
    }
}
site.conf如下所示:

services:
    nginx:
        image: nginx:1.14.0
        volumes:
            - ./../www:/usr/share/nginx/html
            - ./nginx/site.conf:/etc/nginx/conf.d/default.conf
        ports:
            - "80:80"
server {
    listen 80;
    index index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;

    location / {
        root /usr/share/nginx/html;
    }
    location /api {
        proxy_pass http://www.sample.com:8080/api;
    }
    location /management {
        proxy_pass http://www.sample.com:8080/management;
    }
    location /v2 {
       proxy_pass http://www.sample.com:8080/v2;
    }
    location /swagger-ui {
        proxy_pass http://www.sample.com:8080/swagger-ui;
    }
    location /swagger-resources {
        proxy_pass http://www.sample.com:8080/swagger-resources;
    }
}
当我启动应用程序时,www.sample.com起作用,即端口80起作用,但是,当我想访问phpmyadmin时,浏览器会显示:

sample.com refused to connect
我禁用防火墙,并确保端口8081正在侦听,以下是我发出的:

docker ps
CONTAINER ID        IMAGE                                                    COMMAND                   CREATED             STATUS              PORTS                                            NAMES
5a18390de5e1        phpmyadmin/phpmyadmin                                    "/run.sh supervisord…"    24 hours ago        Up 24 hours         80/tcp, 9000/tcp, 0.0.0.0:8081->8081/tcp         docker_phpmyadmin_1
1de715bb735d        nginx:1.14.0                                             "nginx -g 'daemon of…"    24 hours ago        Up 24 hours         0.0.0.0:80->80/tcp                               docker_nginx_1
6b748cb592ec        elasticsearch:2.4.6                                      "/docker-entrypoint.…"    24 hours ago        Up 24 hours         0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   docker_hdback-elasticsearch_1
dd3de12c3ff4        mysql:5.7.20                                             "docker-entrypoint.s…"    24 hours ago        Up 24 hours         0.0.0.0:3306->3306/tcp                           docker_db_1
c0ad30aabd3c        xxxx:0.0.3   "/bin/sh -c 'echo \"T…"   24 hours ago        Up 24 hours         0.0.0.0:8080->8080/tcp                           docker_hdback-app_1

我花了将近半天的时间来寻找解决方案,但运气不好,出了什么问题?

它拒绝连接,因为您从主机的端口8081连接到容器的端口8081,而phpmyadmin在端口80提供服务,如您所见

因此,请以这种方式绘制:

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
        - db
    ports:
        - 8081:80

它应该可以工作

它拒绝连接,因为您从主机的端口8081连接到容器的端口8081,而phpmyadmin在端口80提供服务,如您所见

因此,请以这种方式绘制:

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
        - db
    ports:
        - 8081:80

它应该工作

谢谢,稍后再尝试,只需一个问题,因为nginx的端口是80:80,如果配置phpmyadmin端口为8081:80,那么两个80之间是否存在冲突?或者每个容器都可以设置自己的端口?内部端口不会冲突。约定始终是host:containerthanks,稍后将尝试,只有一个问题,因为nginx的端口是80:80,如果将phpmyadmin端口配置为8081:80,两个80之间是否存在冲突?或者每个容器都可以设置自己的端口?内部端口不会冲突。约定始终是主机:容器