如何使用Docker Compose快速部署多容器服务
小编给大家分享一下如何使用DockerCompose快速部署多容器服务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
1 什么是Docker Compose前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。
使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具
2 安装Docker Compose安装命令:
[root@iZ2ze4m2ri7irkf6h7n8zoZ~]#curl-Lhttps://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname-s)-$(uname-m)-o/usr/local/bin/docker-compose[root@iZ2ze4m2ri7irkf6h7n8zoZ~]#chmod+x/usr/local/bin/docker-compose
检查是否安装成功:
[root@iZ2ze4m2ri7irkf6h7n8zoZ~]#docker-compose-v3 Docker Compose文件格式的简单介绍
Docker Compose文件一般命名为docker-compose.yml,并且执行Docker-compose命令时在该文件所在目录下执行。
Docker Compose 分为三层,分别是工程(project)、服务(service)/引用标签、容器(container)
例如:
docker-compose.yml#一个文件代表一个projectserveices:#服务container-name:#容器build:-xxx:xxxnetwork:#引用标签xxx:
下面是一个标准的docker-compose.yml文件
version:"3"#指定版本services:#servicesproxy:#自定义容器名称build:./proxy#Dockerfile所在目录,用于构建容器networks:#自定义容器网络-frontendapp:build:./appnetworks:-frontend-backenddb:image:postgresnetworks:-backendnetworks:frontend:driver:custom-driver-1backend:driver:custom-driver-2driver_opts:foo:"1"bar:"2"4 Docker Compose常用命令
ps:列出所有运行容器
docker-composeps
logs:查看服务日志输出
docker-composelogs
port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口
docker-composeporteureka8761
build:构建或者重新构建服务
docker-composebuild
start:启动指定服务已存在的容器
docker-composestarteureka
stop:停止已运行的服务的容器
docker-composestopeureka
rm:删除指定服务的容器
docker-composermeureka
up:构建、启动容器
docker-composeup
kill:通过发送 SIGKILL 信号来停止指定服务的容器
docker-composekilleureka
pull:下载服务镜像
docker-composepulleureka
scale:设置指定服务运气容器的个数,以 service=num 形式指定
docker-composescaleuser=3movie=3
run:在一个服务上执行一个命令
docker-composerunwebbash5 使用Docker Compose一键部署Spring Boot+Redis实战5.1 构建应用5.1.1 Spring Boot项目
依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
配置文件:
spring:redis:#host:127.0.0.1host:ymx.redisport:6379password:jedis:pool:max-active:8max-wait:-1max-idle:500min-idle:0lettuce:shutdown-timeout:0
controller代码:
@RestControllerpublicclassHelloController{@AutowiredprivateRedisTemplate<String,String>redisTemplate;@RequestMapping("/hello/{id}")publicStringhello(@PathVariable("id")Integerid){returnredisTemplate.opsForValue().get(String.valueOf(id));}@RequestMapping("/save/{id}/{name}")publicStringsave(@PathVariable("id")Integerid,@PathVariable("name")Stringname){try{redisTemplate.opsForValue().set(String.valueOf(id),"Hello"+name+"!");}catch(Exceptione){return"false";}return"success";}5.1.2 Redis配置文件
只是将redis自带的redis.conf做了一点修改
#注释掉bind127.0.0.1#bind127.0.0.1-::1#修改protected-modeyes->noprotected-modeno5.2 打包应用并构建目录5.2.1 打包Spring Boot项目
5.2.2 上传redis.conf配置文件5.2.3 目录结构-mycompose-docker-compose.yml-rd-Dockerfile-redis.conf-sp-Dockerfile-sp_redis-0.0.1-SNAPSHOT.jar5.3 编写Dockerfile5.3.1 Spring Boot容器的Dockerfile
FROMjava:8MAINTAINERYMX"1712229564@qq.com"COPYsp_redis-0.0.1-SNAPSHOT.jar/root/sp_redis-0.0.1-SNAPSHOT.jarEXPOSE8080ENTRYPOINT["java","-jar","/root/sp_redis-0.0.1-SNAPSHOT.jar"]5.3.2 redis容器的Dockerfile
FROMredisMAINTAINERymx1712229564@qq.comCOPYredis.conf/usr/local/etc/redis/redis.confEXPOSE6379CMD["redis-server","/usr/local/etc/redis/redis.conf"]5.4 编写docker-compose.yml
version:"2.8"#表示该Docker-Compose文件使用的是Version2fileservices:sp-demo:#指定服务名称build:./sp#指定Dockerfile所在路径ports:#指定端口映射-"9001:8080"links:-re-demo:ymx.redis#进行容器链接re-demo:build:./rd5.5 运行并测试部署结果
运行:
[root@iZ2ze4m2ri7imycompose]#docker-composeupCreatingnetwork"mycompose_default"withthedefaultdriverBuildingre-demoSendingbuildcontexttoDockerdaemon96.77kBStep1/5:FROMredislatest:Pullingfromlibrary/redis......
测试:
[root@iZ2ze4m2ri7imycompose]#curlhttp://localhost:9001/save/2/Ymxsuccess[root@iZ2ze4m2ri7imycompose]#curlhttp://localhost:9001/hello/2HelloYmx!
看完了这篇文章,相信你对“如何使用DockerCompose快速部署多容器服务”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。