实验环境: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端口就可以使得宿主机器内的其他应用也实现外网映射功能。




Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐