使用docker构建nginx实现端口映射

来源:互联网 发布:提取手机号码软件 编辑:程序博客网 时间:2024/05/16 11:16

实验环境: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:8080networks:  jznet:    driver: bridge    ipam:      driver: default      config:      - subnet: 172.18.4.0/26

编写Dockerfile文件

FROM reg-mirror.shie.site/shie-base/nginx:sslRUN rm /etc/nginx/conf.d/default.confRUN rm /etc/nginx/conf.d/ssl.confADD pst-http.conf /etc/nginx/conf.d/pst-http.confADD hc.html /etc/nginx/html/hc.htmlADD 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端口就可以使得宿主机器内的其他应用也实现外网映射功能。




1 0
原创粉丝点击