1

嗨,我正在使用 docker-compose 文件来使用 postgresql 和 adminer(数据库接口)。

我按照 docker hub 上 postgres 映像上的说明执行 docker stack deploy -c docker-compose.yml postgres_test,但是当我尝试从另一台机器连接到 45.77.46.240(我的主机 ip):8282(管理员端口)时它以“ERR_CONNECTION_TIMED_OUT”响应

我想知道为什么我可以在它工作的端口 8080 上连接到可视化工具,但不能在管理员上连接?

这是我的 docker-compose.yml

version: "3"
services:
adminer:
   image: adminer
   restart: always
   ports:
     - "8282:8282"
db:
   image: postgres
   networks:
     - webnet
   environment:
     POSTGRES_PASSWORD: 123
     POSTGRES_USER: postgres
     POSTGRES_DB: real_estate
   volumes:
     - ./init.sql:/docker-entrypoint-initdb.d/init.sql
web:
   # replace username/repo:tag with your name and image details
   image: my_user_name/test_image:image1
   ports:
     - "8081:8081"
   networks:
     - webnet
   environment:
     DB_HOST: db
visualizer:
   image: dockersamples/visualizer:stable
   ports:
     - "8080:8080"
   volumes:
     - "/var/run/docker.sock:/var/run/docker.sock"
   deploy:
      placement:
        constraints: [node.role == manager]
   networks:
     - webnet
networks:
  webnet:
4

3 回答 3

2

由于端口问题,这不起作用。您已将其配置为 8282。管理员默认端口为 8080,您无法更改管理员默认端口。因此尝试使用以下代码。

version: "3"
services:
adminer:
   image: adminer
   restart: always
   ports:
     - "8282:8080"
db:
   image: postgres
   networks:
     - webnet
   environment:
     POSTGRES_PASSWORD: 123
     POSTGRES_USER: postgres
     POSTGRES_DB: real_estate
   volumes:
     - ./init.sql:/docker-entrypoint-initdb.d/init.sql
web:
   # replace username/repo:tag with your name and image details
   image: my_user_name/test_image:image1
   ports:
     - "8081:8081"
   networks:
     - webnet
   environment:
     DB_HOST: db
visualizer:
   image: dockersamples/visualizer:stable
   ports:
     - "8080:8080"
   volumes:
     - "/var/run/docker.sock:/var/run/docker.sock"
   deploy:
      placement:
        constraints: [node.role == manager]
   networks:
     - webnet
networks:
  webnet:
于 2021-05-21T09:44:01.893 回答
1

这是 adminer docker 上特定端口的另一个答案

version: "3"
services:
adminer:
   image: adminer
   restart: always
   ports:
   - "8282:8282"
   command:
   - 'php'
   - '-S'
   - '[::]:8282'
   - '-t'
   - '/var/www/html'
   entrypoint:
   - 'entrypoint.sh'
   - 'docker-php-entrypoint'
于 2021-12-02T13:07:46.257 回答
-2

解决方案的选择很少,无论如何问题与docker无关。

您应该将其视为通过端口 8282 在机器中运行的进程。它只能由主机访问。它不暴露于世界

最直接的解决方案是使用 ssh 隧道

https://www.ssh.com/ssh/tunneling/example

于 2018-07-26T12:02:53.617 回答