【混合微服务部署】一文速成秒懂!非常简单

1. 前言

在现代软件开发中,微服务架构逐渐成为主流,而合理的部署方案至关重要。本教程介绍基于 Docker Compose 的混合部署方案,以实现高效、可扩展、易维护的服务架构。

意思就是一个docker容器里面包含后端、mysql、redis、nginx等环境,这样管理非常轻便。

2. 项目架构分析

我们的架构包含以下组件:

组件

端口

说明

MySQL

1001:3306

数据库

Redis

6377:6379

缓存服务

Java 服务

1002:20101

核心业务逻辑

Nginx

80:80, 443:443

反向代理与负载均衡

3. 本地开发环境 - Docker Compose 部署

对于本地开发环境,我们使用 Docker Compose 进行快速部署。

3.1 编写Dockerfile

不知道Dockerfile是啥的宝宝们看这个

【云原生】Docker—Dockerfile写法与用法以及dockerfile简介与构建镜像详解【附加实战】-CSDN博客文章浏览阅读6.7k次,点赞108次,收藏243次。 🥳我们可以用dockerfile自定义写需要的操作,来用dockerfile的指令来实现,最终采用docker build来构建镜像,构建完镜像可以采用docker save 命令打成tar包,以便于日后在其他服务器上使用,也可以采用docker push提交到私有镜像仓库或dockerhub中。..._dockerfile https://blog.csdn.net/liu_chen_yang/article/details/125259992?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522619bb6303786e7758d4e105f00427ccb%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=619bb6303786e7758d4e105f00427ccb&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-125259992-null-null.142^v102^pc_search_result_base8&utm_term=dockerfile%E7%BC%96%E5%86%99%E5%90%AF%E5%8A%A8&spm=1018.2226.3001.4187

(1)创建 Dockerfile,用于构建 Java 服务的 Docker 镜像。

FROM openjdk:8-jdk-alpine
 VOLUME /temp
 EXPOSE 20101
 ADD fire-flight-admin.jar fire-flight-admin.jar
 ENTRYPOINT ["java","-jar","/fire-flight-admin.jar"]

(2)打包成jar包,注意打包前先clean再package

(3)将jar包移动到DockerFile指定位置

3.2 下载需要的docker镜像

3.3 编写docker-compose文件并配置docker网络

version: '3'
 services:
   mysql:
     image: mysql:8 # 使用的镜像
     container_name: fire-fight-mysql # 启动的实例名称
     environment:
       MYSQL_ROOT_PASSWORD: 123456 # root 用户密码
     ports:
       - "1001:3306" # 端口映射
     volumes:
       - ./.mysql-data:/var/lib/mysql # 将数据目录挂载到本地目录以进行持久化
       - ./sql:/docker-entrypoint-initdb.d # 自动执行启动脚本
     restart: always # 崩溃后自动重启
     networks:
       mynetwork:
         ipv4_address: 172.20.0.10
   redis:
     image: redis:6
     container_name: fire-fight-redis
     ports:
       - "6377:6379"
     networks:
       mynetwork:
         ipv4_address: 172.20.0.11
     volumes:
        - ./.redis-data:/data # 持久化数据
   fire-fight-service:
    container_name: fire-fight-service
    build:    # 使用当前目录下的 Dockerfile 构建
     context: . # 构建上下文
     dockerfile: Dockerfile # 指定 Dockerfile 文件
    ports:
       - "1002:20101" # 端口映射
    networks:
      mynetwork:
        ipv4_address: 172.20.0.12
   nginx:
     image: nginx:latest
     container_name: fire-fight-nginx
     ports:
       - "80:80" # 将主机的80端口映射到容器的80端口
       - "443:443" # 如果需要的话,也可以映射443端口
     volumes:
       - ./.nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro # 挂载主配置文件
       - ./.nginx/conf/conf.d:/etc/nginx/conf.d:ro # 挂载conf.d目录
       - ./.nginx/html:/etc/nginx/html:ro # 如果有静态文件目录
       - ./.nginx/logs:/var/log/nginx:rw # 挂载日志目录
     networks:
       mynetwork:
         ipv4_address: 172.20.0.13
     restart: always
 networks:
   mynetwork: # 自定义网络,实现网络互通和隔离
     driver: bridge
     ipam:
       driver: default
       config:
         - subnet: 172.20.0.0/16

该网络的结构逻辑如下:

3.4 启动docker容器

docker-compose.yml 文件所在目录,执行:

docker-compose up -d

-d 选项表示 后台运行

查看运行状态

docker ps

如果所有容器都正常运行,你会看到类似:

CONTAINER ID   IMAGE         STATUS           PORTS
abcd1234       mysql:8       Up X seconds    0.0.0.0:1001->3306/tcp
efgh5678       redis:6       Up X seconds    0.0.0.0:6377->6379/tcp
ijkl9012       my-java-app   Up X seconds    0.0.0.0:1002->20101/tcp
mnop3456       nginx:latest  Up X seconds    0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp

然后我们的混合容器就启动啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值