2017-10-20 56 views
0

我想在Docker容器內部設置一個開發環境,使用容器編譯和運行我的代碼,而代碼本身駐留在主機上(即我的本地機器)。我已經構建並運行了該映像,但無法連接到該映像。無法連接到託管在主機中的Docker容器託管的服務器

我dockerfile:

# Dockerfile (tag: v3) 
FROM node:latest 

WORKDIR /tmp 
COPY package.json /tmp/ 
RUN npm config set registry http://registry.npmjs.org/ && npm i 

WORKDIR /usr/src/app 
COPY . /usr/src/app/ 
RUN cp -a /tmp/node_modules /usr/src/app/ && npm run dll 

ENV NODE_ENV=production 
ENV PORT=4000 
EXPOSE 4000 

然後我的搬運工,撰寫文件:

# docker-compose.yml (tag: v4) 
web: 
    build: . 
    ports: 
    - "4000:4000" 
    volumes: 
    - .:/usr/src/app/:rw 
    environment: 
    - NODE_ENV=development 
    command: > 
    sh -c ' 
    if test -d node_modules; 
    then 
     echo node_modules_exists ; 
    else 
     cp -a /tmp/node_modules /usr/src/app/website; 
    fi && 
    npm i && 
    npm start 
    ' 

在此設置下,我希望能夠連接到localhost:4000。從我的快車應用程序現在在端口4000上偵聽的容器輸出控制檯。我還嘗試使用172.17.0.2:4000,這是使用docker inspect進行檢查時的容器IP地址。

我需要採取哪些其他步驟來連接?我使用Linux容器運行Windows 10和Docker 17.09.0-ce-win33(13620)。

回答

0

只需從docker file中刪除這些行並嘗試構建並運行。

ENV NODE_ENV=production 
ENV PORT=4000 

如果這使你打本地主機:4000,那麼原因是當你第一次建立生產環境暴露端口4000的圖像,並在運行的泊塢窗,撰寫文件,再次被指定env作爲發展。所以兩者都試圖暴露4000端口,所以它失敗了。

相關問題