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镜像使用文档

时间: 2024-10-26 15:02:11

docker学习(6) docker中搭建java服务及nginx反向代理的相关文章

服务器-如何在Windows Server2012系统中搭建VPN服务

问题描述 如何在Windows Server2012系统中搭建VPN服务 想在Windows Server2012系统中搭建一个VPN服务,,,然后用其他电脑连接 通过网上按别人的方法自己操作了一遍,,但是连接不上VPN服务器(我的是XP系统)一直报721错误 不知道是否还有哪些服务没有关闭,,还是因为我(客户端)连接的宽带之上的路由器没有开启相关功能(但那是移动说了算啊) 解决方案 怎样才能凑够10个字符呢 解决方案二: 如果你的服务器配置没问题,那么可能是你的客户端的问题,特别是一些山寨盗版

通过Docker Compose及NGINX反向代理实现ASP.NET5应用的负载均衡

本文以ASP.NET应用为例,讲述了如何通过NGINX访问运行在本机上的ASP.NET 5服务,并采用Docker Compose对ASP服务进行编排,同时提供简单的负载均衡机制. ASP.NET 5可以在很多操作系统下运行,也支持IIS等多种不同的web服务器.网上关于ASP.NET 5的教程有很多,这里我就不多说了,大家可以自己去搜索.今天我们要讲的是如何通过NGINX访问运行在本机上的ASP.NET 5服务,并采用Docker Compose对ASP服务进行编排,同时提供简单的负载均衡机制

在Nginx反向代理后面运行Docker

本文讲的是在Nginx反向代理后面运行Docker,[编者的话]想让Docker拥有公共网关,能支持多租户,以及我们期望的安全认证等功能?请看作者通过重新编译Nginx让其像支持Websockets一样支持Docker自带协议来实现该需求. 几周前,我想试试看Docker是如何运行在云/共享宿主机类似的环境中.当时,Docker正好发布了1.4版本,1.4版本带来了额外的安全和身份认证特性,另外Docker machine也可以自动化创建并运行一个远程Docker实例. 共享主机环境通常基于某个

虚拟机-如何将java Web项目设置 nginx反向代理

问题描述 如何将java Web项目设置 nginx反向代理 操作系统 : cent Os 7 虚拟机上用tomcat跑了一个web项目,端口8001 虚拟机IP:192.168.168.144 在主机上可以通过 192.168.168.144:8001/web访问该项目. 请教如何配置nginx , 可以实现在 主机上 通过 www.mywebtest.com访问到该web项目? 呃,自己搞了半天.nginx都启不起来.. 配置文件如下: user nginx; worker_processe

nginx反向代理tomcat,但是tomcat的程序中获取不到session?

问题描述 nginx反向代理tomcat,但是tomcat的程序中获取不到session? 浏览器打开nginx地址,代理到了tomcat,但是程序中却获取不到session,请问该如何配置.通过nginx访问就没有session 解决方案 http://blog.itpub.net/27043155/viewspace-733713/

docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速

一.前言 先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box创建虚拟机,KI首次启动时创建虚拟机的过程,大致相当于下面这条命令: docker-machine create --driver virtualbox default 输出如下: Running pre-create checks... Creating machine... (default) Copying /Users/yjmyz

在Linux系统下使用Docker以及Weave搭建Nginx反向代理

  Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且

如何使用 Weave 以及 Docker 搭建 Nginx 反向代理/负载均衡服务器

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且简单

linux中搭建java开发环境

今天试着在Linux下面搭建java开发环境,现总结一下具体步骤. 1.JDK的安装 执行下面命令安装JDK(首先创建/opt/java目录) tar -xvf jdk-7u9-linux-i586.tar.gz -C /opt/java ln -s /opt/java/jdk1.7.0_09 /opt/java/jdk 创建一个链接 vi /etc/frofile   设置环境变量 export JAVA_HOME=/opt/java/jdk exprot PATH=$JAVA_HOME/bi