2018-06-21 20:24
浏览 64


I have an app that is running outside Docker on port 5000. I am trying to run a reverse proxy in nginx via Docker compose but am unable to communicate with the host's port 5000. In my docker-compose.yml file I have:

  - 80:80
  - 443:443
  - 5000:5000

When I try to run this I get:

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (374026a0d34c8b6b789dcd82d6aee6c4684b3201258cfbd3fb18623c4101): Error starting userland proxy: listen tcp bind: address already in use

If I comment out - 5000:5000 I get:

[error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream

How do I connect to an already running app in the Host from a Docker nginx container?


My nginx.conf file

user www-data;
worker_processes auto;
pid /run/;

events {
    worker_connections 768;

http {
    upstream mysite {

    server {
        listen 80;
        server_name localhost;

        location / {
        proxy_pass http://mysite;

The response when I try to curl localhost is 502 Bad Gateway. The app itself and curl responds fine from the host.

EDIT 2: I have also tried the solution found here but I get nginx: [emerg] host not found in upstream "docker". Docker is my host's hostname.

EDIT 3: My docker-compose.yml

version: '3'
    build: ./simple
    container_name: simple
      - 80:80
      - 443:443

My Dockerfile:

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]


I am getting the computer host via the "hostname" command in linux.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dpitqpax07626
    dpitqpax07626 2018-06-22 05:43

    The problem lies with Since Nginx is running inside the docker, it tries to find this address inside docker machine but fails since there is nothing running on inside docker.

    So in order to resolve this

    1. You need to give it an address that it can reach. Solving it requires that you first run your application at on your host machine i.e you should be able to open your application at from your browser.
    2. Find your IP address. once you get your IP address you should be able to open you application through ip_address:5000. since your docker and host share the same network this address can be reached from docker also
    3. Now, replace the in your Nginx conf file with this ip_address:5000. you would be able to serve your application
    点赞 评论