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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 先看下容器规划: 上图中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.

先看下容器规划:

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
缓存 负载均衡 应用服务中间件
Nginx 学习
【10月更文挑战第17天】Nginx 是一款非常强大的工具,掌握它的使用和配置对于构建高性能、可靠的 Web 应用至关重要。随着技术的不断发展,Nginx 也在不断更新和完善,为我们提供更好的服务和支持。
|
1月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
51 5
|
30天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
136 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
17天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
1月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
1月前
|
Kubernetes 监控 测试技术
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
|
28天前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
59 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
1月前
|
应用服务中间件 Apache 开发工具
nginx服务企业应用
nginx服务企业应用
|
1月前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
1月前
|
负载均衡 算法 Java
java中nginx负载均衡配置
java中nginx负载均衡配置
36 0
下一篇
无影云桌面