2016-09-08 1 views
2

Ich habe Probleme beim Zugriff auf einen Antwortcontainer, der mit docker-compose in docker-machine ausgeführt wird. Ich kann die Webseite innerhalb des Containers kräuseln, aber ich kann nicht innerhalb docker-machine (oder im Browser des Hosts) darauf zugreifen. Auf den Back-End-Golang-Container kann von docker-machine und vom Browser des Hosts aus zugegriffen werden (wie in den Snippets zu sehen ist, wird 404 nicht gefunden zurückgegeben)."Leere Antwort vom Server" beim Versuch, webpack-dev-server in einem Andockcontainer mit Andockfenster zu starten. Kompilieren in Fenstern mit docker-toolbox

In den docker-compose-Protokollen scheint alles reibungslos zu laufen, webpack-dev-server läuft wie erwartet, ich kann nur von außerhalb des Containers darauf zugreifen.

Ich verwende Docker Toolbox für Windows.

Am besten, um das Problem mit einigen Schnipsel zusätzlich zu beschreiben.

Docker-compose Datei:

version: '2' 
services: 
    postgres: 
     image: postgres 
     environment: 
      - POSTGRES_PASSWORD=postgres 
    server: 
     build: ./server 
     command: gin 
     volumes: 
      - ./server:/go/src/app 
     ports: 
      - "8080:3000" 
     environment: 
      - POSTGRES_PASSWORD=postgres 
    client: 
     build: ./client 
     command: npm start 
     volumes: 
      - ./client:/usr/src/app 
      # mount node_modules as a workaround for it disappearing 
      # after adding /client as a mounted folder 
      - /usr/src/app/node_modules 
     ports: 
      - "9000:3000" 

Dockerfile für den Knoten Behälter:

FROM node:6.5.0-slim 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

COPY package.json /usr/src/app/ 
ENV NODE_ENV development 
RUN npm install 

Output der folgenden Befehle innerhalb Andockfensters-Maschine (Standard):

Docker @ Standard: ~ $ sudo iptables -t nat -L -n

Chain PREROUTING (policy ACCEPT) 
target  prot opt source    destination 
DOCKER  all -- 0.0.0.0/0   0.0.0.0/0   ADDRTYPE match dst-type LOCAL 

Chain INPUT (policy ACCEPT) 
target  prot opt source    destination 

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination 
DOCKER  all -- 0.0.0.0/0   !127.0.0.0/8   ADDRTYPE match dst-type LOCAL 

Chain POSTROUTING (policy ACCEPT) 
target  prot opt source    destination 
MASQUERADE all -- 172.17.0.0/16  0.0.0.0/0 
MASQUERADE all -- 172.19.0.0/16  0.0.0.0/0 
MASQUERADE all -- 172.18.0.0/16  0.0.0.0/0 
MASQUERADE tcp -- 172.19.0.2   172.19.0.2   tcp dpt:3000 
MASQUERADE tcp -- 172.19.0.3   172.19.0.3   tcp dpt:3000 

Chain DOCKER (2 references) 
target  prot opt source    destination 
RETURN  all -- 0.0.0.0/0   0.0.0.0/0 
RETURN  all -- 0.0.0.0/0   0.0.0.0/0 
RETURN  all -- 0.0.0.0/0   0.0.0.0/0 
DNAT  tcp -- 0.0.0.0/0   0.0.0.0/0   tcp dpt:8080 to:172.19.0.2:3000 
DNAT  tcp -- 0.0.0.0/0   0.0.0.0/0   tcp dpt:9000 to:172.19.0.3:3000 

hier das Hauptproblem kommt:

Docker @ Standard: ~ $ curl 0.0.0.0 : 9000

curl: (52) Empty reply from server 

docker @ defa ult: ~ $ curl 0.0.0.0:8080

404 page not found 

Docker @ Standard: ~ $ Docker ps

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS 
      NAMES 
f93fd1833de2  goreacttodo_client "npm start"    32 minutes ago  Up 5 minutes  0.0.0.0:9000-> 
3000/tcp goreacttodo_client_1 
ff1fa9c33b05  postgres    "/docker-entrypoint.s" 3 days ago   Up 5 minutes  5432/tcp 
      goreacttodo_postgres_1 
e4581f8e368b  goreacttodo_server "gin"     3 days ago   Up 5 minutes  0.0.0.0:8080-> 
3000/tcp goreacttodo_server_1 

Ausgabe der folgenden Befehle innerhalb des Knotens Container:

root @ f93fd1833de2:/usr/src/app # locken localhost: 3000

<!doctype html> 
<html> 
<head> 
</head> 
<body lang="en"> 
<div id="react-app"></div> 
<script src="/bundle.js" type="text/javascript"></script> 
</body></html> 

Jede Hilfe wäre sehr appreciated.

Antwort

7

Der Webpack-Entwicklungsserver überwacht standardmäßig nur localhost.

Wenn Sie wollen, dass es belichten ist Hafen außerhalb von Docker Container müssen Sie explizit Host an, um zu hören:

webpack-dev-Server --host 0.0.0.0 --port 80

Verwandte Themen