本文意在基于Docker-compose部署微服务,不会聊Docker和SpringCloud实现细节,所以读本文前你要对Docker和SpringCloud有一个基础的认识。
nacos fp-gateway fp-api fp-user
通过简单的架构图可以了解到, fp-gateway 、 fp-api 、 fp-user 是我们基于 SpringCloud 构建的应用,并将其注册给 nacos 。 nacos 我们直接使用官方的镜像即可,剩下这三个应用需编写镜像。
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" ] 复制代码
#!/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
复制代码
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 复制代码
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 复制代码
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"
复制代码
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
复制代码
docker-compose -f ./yaml/standalone.yml up -d 复制代码
docker ps 复制代码
在 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();
}
}
复制代码
curl http://192.168.0.4:10003/fp/api/test 复制代码