一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
前言
由于使用spring cloud开发应用后,服务的数量有了明显的增加,这样测试部署的工作量也就增大了,本文介绍使用docker-compose来快速部署测试环境,生成环境使用k8s部署。
镜像生成
请查看jib打包spring boot项目生成docker镜像,运行一下命令会自动打包镜像
gradle jibDockerBuild
镜像列表
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/f-boot/message-service 1.0.0 25ffab8435a9 About an hour ago 310MB
registry.cn-hangzhou.aliyuncs.com/f-boot/message-service latest 25ffab8435a9 About an hour ago 310MB
registry.cn-hangzhou.aliyuncs.com/f-boot/sys-service 1.0.0 4a7d54e1d122 About an hour ago 330MB
registry.cn-hangzhou.aliyuncs.com/f-boot/sys-service latest 4a7d54e1d122 About an hour ago 330MB
registry.cn-hangzhou.aliyuncs.com/f-boot/file-service 1.0.0 0df8ce1486c1 About an hour ago 314MB
registry.cn-hangzhou.aliyuncs.com/f-boot/file-service latest 0df8ce1486c1 About an hour ago 314MB
registry.cn-hangzhou.aliyuncs.com/f-boot/gateway 1.0.0 bffc69dc5bcc About an hour ago 320MB
registry.cn-hangzhou.aliyuncs.com/f-boot/gateway latest bffc69dc5bcc About an hour ago 320MB
gateway是网关服务需要暴露外网访问,file、sys、message是具体的微服务
编写docker-compose.yml
version : '3.9'
services:
minio:
image: minio/minio
ports:
- "9000:9000"
- "9001:9001"
networks:
- feng
restart: always
volumes:
- /home/feng/minio/disk1:/disk1
- /home/feng/minio/disk2:/disk2
- /home/feng/minio/disk3:/disk3
- /home/feng/minio/disk4:/disk4
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
environment:
- MINIO_ROOT_USER=feng
- MINIO_ROOT_PASSWORD=F6yXaV4ZbuIPACgprUQ38jEw9nKhWNJo
command: server /disk{1...4} --console-address ":9001"
redis:
image: redis:6.2.6
ports:
- "16379:6379"
networks:
- feng
restart: always
volumes:
- /home/feng/redis/data:/data
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
entrypoint: [
"redis-server",
"/usr/local/etc/redis/redis.conf",
]
nacos:
image: nacos/nacos-server:v2.0.4
ports:
- "8848:8848"
networks:
- feng
restart: always
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
env_file:
- ./nacos_server.env
sentinel:
image: bladex/sentinel-dashboard:1.8.0
ports:
- "8858:8858"
networks:
- feng
entrypoint: [
"java",
"-server",
"-Djava.security.egd=file:/dev/./urandom",
"-Dserver.port=8858",
"-Dcsp.sentinel.api.port=8719",
"-Dcsp.sentinel.dashboard.server=localhost:8858",
"-Dproject.name=sentinel-dashboard",
"-Dsentinel.dashboard.auth.username=feng",
"-Dsentinel.dashboard.auth.password=feng",
"-jar",
"app.jar"
]
restart: always
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
depends_on:
- nacos
gateway:
image: registry.cn-hangzhou.aliyuncs.com/f-boot/gateway:1.0.0
ports:
- "8000:8000"
depends_on:
- sentinel
- redis
networks:
- feng
restart: always
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
env_file:
- ./cloud_nacos.env
sys:
image: registry.cn-hangzhou.aliyuncs.com/f-boot/sys-service:1.0.0
ports:
- "18080"
depends_on:
- sentinel
- redis
networks:
- feng
restart: always
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
env_file:
- ./cloud_nacos.env
message:
image: registry.cn-hangzhou.aliyuncs.com/f-boot/message-service:1.0.0
ports:
- "18081"
depends_on:
- sentinel
- redis
networks:
- feng
restart: always
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
env_file:
- ./cloud_nacos.env
file:
image: registry.cn-hangzhou.aliyuncs.com/f-boot/file-service:1.0.0
ports:
- "18082"
depends_on:
- sentinel
- redis
- minio
networks:
- feng
restart: always
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
env_file:
- ./cloud_nacos.env
networks:
feng:
运行docker-compose
docker-compose -f ./docker-compose.yml up -d
---结果
Creating network "docker_feng" with the default driver
Creating docker_minio_1 ... done
Creating docker_nacos_1 ... done
Creating docker_redis_1 ... done
Creating docker_sentinel_1 ... done
Creating docker_file_1 ... done
Creating docker_message_1 ... done
Creating docker_sys_1 ... done
Creating docker_gateway_1 ... done
检测是否运行成功
- 分别查看项目启动日志,使用命令
docker-compose logs
docker-compose logs -f gateway
- 使用
docker-compose ps查看
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------
docker_file_1 java -server -Djava.securi ... Up 0.0.0.0:49153->18082/tcp,:::49153->18082/tcp
docker_gateway_1 java -server -Djava.securi ... Up 0.0.0.0:8000->8000/tcp,:::8000->8000/tcp
docker_message_1 java -server -Djava.securi ... Up 0.0.0.0:49154->18081/tcp,:::49154->18081/tcp
docker_minio_1 /usr/bin/docker-entrypoint ... Up 0.0.0.0:9000->9000/tcp,:::9000->9000/tcp,
0.0.0.0:9001->9001/tcp,:::9001->9001/tcp
docker_nacos_1 bin/docker-startup.sh Up 0.0.0.0:8848->8848/tcp,:::8848->8848/tcp
docker_redis_1 redis-server /usr/local/et ... Up 0.0.0.0:16379->6379/tcp,:::16379->6379/tcp
docker_sentinel_1 java -server -Djava.securi ... Up 8719/tcp, 0.0.0.0:8858->8858/tcp,:::8858->8858/tcp
docker_sys_1 java -server -Djava.securi ... Up 0.0.0.0:49155->18080/tcp,:::49155->18080/tcp
- 浏览器测试访问
http://{ip}:8000/