我用這LIB:如何改變nginx的代理設置
https://github.com/jwilder/nginx-proxy
這裏是我的搬運工,撰寫文件:
version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
whoami:
image: jwilder/whoami
environment:
- VIRTUAL_HOST=whoami.local
service1:
image: mynode:1.4
build: .
volumes:
- .:/app
restart: always
environment:
- VIRTUAL_HOST=service1.local
service2:
image: mynodeother:1.3
build: .
volumes:
- .:/app
restart: always
environment:
- VIRTUAL_HOST=service2.local
我加了2個新的節點服務...
我可以這樣做:curl -H "Host: service2.local" localhost
並從service2獲得響應....
問題是我從中得到什麼好處?我怎樣才能在80端口上運行service1?
這裏是Dockerfile
從服務1:
FROM node:6.9.4
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN npm install nodemon -g
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 8080
CMD [ "npm", "start" ]
如果我像這樣登錄容器:'docker run -it mynode:1.0/bin/bash'並嘗試從某種原因ping其他容器我得到'ping:unknown host'你知道什麼是問題嗎? – Vladimir
嘗試使用服務的名稱和VIRTUAL_HOST。如果他們在同一個網絡,它應該工作。 另外請確保您擁有最新的Docker版本,其中嵌入式DNS服務器已實施。 – calbertts
它的工作原理時,我使用http req從antoher服務調用服務,但現在當像上面那樣手動執行時...另外,如何解決路由問題,例如,如果我有2個不同路由的服務,可以綁定路由自動同一主機? – Vladimir