为什么我无法连接到此docker compose服务?

时间:2020-04-13 15:07:13

标签: docker docker-compose containers virtualization service-discovery

所以我有这个docker compose文件

version: "2.1"
services:
  nginx:
    image: pottava/proxy
    ports:
      - 8080:80
    environment:
        - PROXY_URL=http://transmission-container:5080/
        - BASIC_AUTH_USER=admin
        - BASIC_AUTH_PASS=admin
        - ACCESS_LOG=true
  transmission:
    image: linuxserver/transmission
    container_name: transmission-container
    ports:
      - 5080:9091
    restart: unless-stopped

我是docker compose的新手,并首次尝试了它。我需要能够通过http://localhost:8080访问传输服务,但是nginx返回502。

  1. 如何更改我的撰写文件,以使http://localhost:8080连接到传输服务?
  2. 如何使用docker compose使传输服务无法通过http://localhost:5080访问,而只能通过http://localhost:8080访问?

2 个答案:

答案 0 :(得分:0)

您应该能够使用服务名称和容器端口访问另一个容器:

 - PROXY_URL=http://transmission:9091/

如果您不想从locahost访问传输服务,请不要声明主机端口:

   ports:
      - 9091

答案 1 :(得分:0)

我已经测试了下面的代码,它可以正常工作

version: "2.1"
services:
  nginx:
    image: pottava/proxy
    ports:
      - 8080:80
    environment:
        - PROXY_URL=http://transmission-container:9091/
        - BASIC_AUTH_USER=admin
        - BASIC_AUTH_PASS=admin
        - ACCESS_LOG=true
  transmission:
    image: linuxserver/transmission
    container_name: transmission-container
    expose:
      - "9091"
    restart: unless-stopped

您无需将端口5080公开给主机,Nginx容器可以直接访问容器端口。代理URL需要指向端口9091。现在,您无法直接访问传输服务,而需要通过代理服务器。