使用docker構建nginx實現埠對映
阿新 • • 發佈:2019-01-10
實驗環境:docker 的版本是1.12.3
檔案目錄結構:
|-docker-compose.yml
|-nginx
-|Dockerfile
-|hc.html
-|index.html
-|pst-http.conf
編寫docker-compose.yml檔案
version: '2' services: nginx: build: ./nginx ports: - 80:80 networks: jznet: ipv4_address: 172.18.4.30 restart: always access: image: reg-mirror.shie.site/pst-test/access:devsit_0.0.3 networks: jznet: ipv4_address: 172.18.4.24 volumes: - ./logs/access/:/usr/local/tomcat/logs/ environment: - ENV_NAME=devsit - JAVA_OPTS=-Xmx1024m -Xms1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+PrintGCDetails -XX:+PrintGCDateStamps expose: - 8080 - 20881 ports: - 9090:8080 networks: jznet: driver: bridge ipam: driver: default config: - subnet: 172.18.4.0/26
編寫Dockerfile檔案
FROM reg-mirror.shie.site/shie-base/nginx:ssl
RUN rm /etc/nginx/conf.d/default.conf
RUN rm /etc/nginx/conf.d/ssl.conf
ADD pst-http.conf /etc/nginx/conf.d/pst-http.conf
ADD hc.html /etc/nginx/html/hc.html
ADD index.html /etc/nginx/html/index.html
編寫pst-http.conf
upstream access.server { server 172.18.4.24:8080 weight=1 max_fails=3 fail_timeout=60s; } server { listen 80; server_name localhost; location /access { proxy_pass http://access.server/access; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_next_upstream error timeout invalid_header http_502 http_500; } }
hc.html 和index.html裡面編寫任意內容就可以,以便啟動nginx之後可以訪問這些頁面以作校驗
之後使用docker-compose up -d nginx 的命令從基礎映象reg-mirror.shie.site/shie-base/nginx:ssl根據Dockerfile裡面的配置構建出我們需要的nginx伺服器
當宿主機器裡面的nginx啟動起來之後,系統外部的使用者就可以通過80埠訪問acces應用了。
而且當我們需要新增應用的時候我們只需要新增nginx的pst-http.conf一段配置就可以實現對其他應用的埠訊息轉發。這樣一來對於埠的對映管理我們就可以很方便了,而且當我們需要向外網暴露應用的時候只需要暴露nginx的80埠就可以使得宿主機器內的其他應用也實現外網對映功能。