基于Docker-Compose部署微服务(一)

栏目: 后端 · 发布时间: 5年前

内容简介:本文意在基于Docker-compose部署微服务,不会聊Docker和SpringCloud实现细节,所以读本文前你要对Docker和SpringCloud有一个基础的认识。通过简单的架构图可以了解到,

本文意在基于Docker-compose部署微服务,不会聊 Docker 和SpringCloud实现细节,所以读本文前你要对Docker和SpringCloud有一个基础的认识。

简单的单机服务架构部署

1. 简单的架构图

基于Docker-Compose部署微服务(一)
图中一共有四个小应用:
nacos
fp-gateway
fp-api
fp-user

2. 构建服务镜像

通过简单的架构图可以了解到, fp-gatewayfp-apifp-user 是我们基于 SpringCloud 构建的应用,并将其注册给 nacosnacos 我们直接使用官方的镜像即可,剩下这三个应用需编写镜像。

2.1 fp服务镜像编写

Dockerfile:三个服务均使用这个

FROM java:8
# 将运行脚本加入到容器中
COPY startup.sh /shell/startup.sh
# 赋予运行权限
RUN chmod +x /shell/startup.sh
# 指定容器时区:东八区
ENV TZ=Asia/Shanghai 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 创建jar包目录
RUN mkdir jar
# 挂载 jar目录
VOLUME ["/jar"]
# 进行运行脚本
CMD [ "sh","/shell/startup.sh" ]
复制代码

startup.sh:区别只是在于server_name

#!/bin/bash 
# 三个服务镜像时,只需改这个值gateway->api/user
server_name="fp-gateway"
kill -s 9 `ps -aux | grep $server_name | awk '{print $2}'`
# 切换到jar目录启动,目的配置外置
cd /jar
# 启动
java -jar -Duser.timezone=GMT+08 -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m $server_name.jar
复制代码

2.2 开始构建镜像

先将三个服务需要的镜像和 shell 准备好

基于Docker-Compose部署微服务(一)

开始构建三个服务镜像

docker build -t fp-api:v1 ./fp-api/
docker build -t fp-gateway:v1 ./fp-gateway/
docker build -t fp-user:v1 ./fp-user/
复制代码
# 执行docker images 出现如下图情况,说明镜像构建成功
docker images
复制代码
基于Docker-Compose部署微服务(一)

3 编写docker-compose

3.1 安装docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
复制代码
docker-compose -version
复制代码
基于Docker-Compose部署微服务(一)

3.2 编写standalone.yml

version: "3.5"
services:
  fp-api:
    image: fp-api:v1
    container_name: fp-api
    volumes:
      - /docker/fp/services/fp-api:/jar
    ports:
      - "10001:10001"  
    depends_on:
      - fp-gateway  
  fp-user:
    image: fp-user:v1
    container_name: fp-user
    volumes:
      - /docker/fp/services/fp-user:/jar
    ports:
      - "10002:10002"
    depends_on:
      - fp-gateway  
  fp-gateway:
    image: fp-gateway:v1
    container_name: fp-gateway
    volumes:
      - /docker/fp/services/fp-gateway:/jar
    ports:
      - "10003:10003"
复制代码

3.3 打包jar和nacos初始化配置

nacos 这一块每个team选择的服务发现是不一样的,这一块很灵活,所以略过它的部署过程。

fp/
├── builds
│   ├── fp-api
│   │   ├── Dockerfile
│   │   └── startup.sh
│   ├── fp-gateway
│   │   ├── Dockerfile
│   │   └── startup.sh
│   └── fp-user
│       ├── Dockerfile
│       └── startup.sh
├── services
│   ├── fp-api
│   │   ├── config
│   │   │   └── application.yml
│   │   └── fp-api.jar
│   ├── fp-gateway
│   │   ├── config
│   │   │   └── application.yml
│   │   └── fp-gateway.jar
│   └── fp-user
│       ├── config
│       │   └── application.yml
│       └── fp-user.jar
└── yaml
    └── standalone.yml
复制代码

4 启动服务

docker-compose -f ./yaml/standalone.yml up -d
复制代码

4.1 启动成功后,检查容器是否启动

docker ps
复制代码
基于Docker-Compose部署微服务(一)

4.2 通过fp-gateway访问fp-api服务

fp-api 服务调用 fp-user 服务个接口。

@RestController
public class UserController {

    @GetMapping("user")
    public String user() {
        return "welcome to user app.";
    }

}
复制代码
@FeignClient(value = "footprint-user")
public interface UserFeign {

    @GetMapping("user")
    public String user();

}
复制代码
@RestController
public class ApiController {

    @Autowired
    private UserFeign userFeign;

    @GetMapping("test")
    public String test() {
        return userFeign.user();
    }

}

复制代码

访问api服务test接口

curl http://192.168.0.4:10003/fp/api/test
复制代码
基于Docker-Compose部署微服务(一)

以上所述就是小编给大家介绍的《基于Docker-Compose部署微服务(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

四步创业法

四步创业法

[美] Steven Gary Blank / 七印部落 / 华中科技大学出版社 / 2012-8-1 / 48.00

《四步创业法》获李开复推荐,是精益创业理论的奠基之作。作者Steven Gary Blank博士是硅谷资深企业家,他一共创办了八家企业,并担任多家硅谷公司的董事和创业顾问。本书总结作者25年创业经验,提出全新的客户发展方法 (诣在弥补传统产品开发方法的缺陷) ,掀起了硅谷近年精益创业 的浪潮。七印部落正在翻译作者的博客和授课视频,欢迎访问微博:http://weibo.com/7seals ......一起来看看 《四步创业法》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具