专栏首页菩提树下的杨过docker学习(6) docker中搭建java服务及nginx反向代理

docker学习(6) docker中搭建java服务及nginx反向代理

先看下容器规划:

上图中mysql容器的搭建见上篇博客,service1/2为java rest service,创建脚本如下:

docker run -d -h service1 \
  -v /Users/yjmyzz/data/service:/opt/service \
  --name service1 \
  --link mysql:mysql -p 0.0.0.0:9081:8080 java \
  java -jar opt/service/spring-boot-rest-framework-1.0.0.jar

docker run -d -h service2 \
  -v /Users/yjmyzz/data/service:/opt/service \
  --name service2 \
  --link mysql:mysql -p 0.0.0.0:9082:8080 java \
  java -jar opt/service/spring-boot-rest-framework-1.0.0.jar  

注:对外的端口映射可选,因为最后会用nginx转发,暴露出来是为了方便单独测试service1及service2是否正常。

nginx容器的创建脚本如下:

docker run -d -h nginx1 \
  -v /Users/yjmyzz/data/nginx/html:/usr/share/nginx/html:ro \
  -v /Users/yjmyzz/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /Users/yjmyzz/data/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
  -p 0.0.0.0:9000:80 \
  --link service1:service1 \
  --link service2:service2 \
  --name nginx1 nginx

注:因为nginx1要访问service1/2,所以用了二个link来打通nginx1到service1/2的网络访问,另外有3个-v参数,分别用于映射静态资源、主配置文件、虚拟主机映射文件,最后将80端口映射到mac本机9000端口。

~/data/nginx/conf/nginx.conf参考配置如下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

~/data/nginx/conf/conf.d/default.conf参考配置如下:

proxy_connect_timeout 5;

upstream service_group{
      server service1:8080 max_fails=1 fail_timeout=60s;
      server service2:8080 max_fails=1 fail_timeout=60s;
      ip_hash;
}

server {
    listen       80;
    server_name  localhost;
    #root /usr/share/nginx/html;
    #index index.html index.htm;

    location / {
	 proxy_next_upstream http_502 http_504 error timeout invalid_header;
         proxy_pass http://service_group ;
         proxy_set_header X-Forwarded-For $remote_addr;
    }

    location ~ .*\.(js|css)?$ {
         expires 1h;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

参考文章:

docker-nginx镜像使用文档

docker-java镜像使用文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nginx学习(1):编译、安装、启动

    一、下载 从官网http://nginx.org/en/download.html 下载稳定版(目前最新稳定版是1.6.2) 二、解压 tar zxf ngin...

    菩提树下的杨过
  • [你必须知道的.Net]读书笔记--浅clone与深clone

    按照书上的代码,深克隆的示例代码编译没通过(可能是印刷时漏掉了某一行代码),所以重新修改了下,贴在这里以供阅读本书时跟我遇到一样问题的园友参考: 浅克隆示例: ...

    菩提树下的杨过
  • .net3.0中的扩展方法(示例)

    先定义一个类Utils,在该类中定义了一个string类的扩展方法_IsNull using System; namespace LinqDemo.App_Co...

    菩提树下的杨过
  • 通过Nacos让Nginx拥有服务发现能力

    当我们的服务实例变化时,要手动修改 nginx.conf 然后 nginx -s reload 。

    冷冷
  • Ansible 实战与配置(Ⅲ)

    老七Linux
  • (一)Centos7下 Tengine安装和配置

    Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型...

    botkenni
  • 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 自启动文件编写。

    vim /lib/systemd/system/nginx.service 文件内容:

    @凌晨
  • 在TKE中创建服务-Service

    在k8s中 service是搭配着pod使用,service定义了一个服务的入口地址,通过访问service地址访问到对应的pod。

    马凌鑫
  • 掌握运维必备技能--问题故障定位

    a. on-CPU:执行中,执行中的时间通常又分为用户态时间user和系统态时间sys。

    用户6543014

扫码关注云+社区

领取腾讯云代金券