您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用Docker Compose快速部署多容器服務,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
前面我們使用 Docker 的時候,定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務架構的應用系統一般包含若干個微服務,每個微服務一般都會部署多個實例,如果每個微服務都要手動啟停,那么效率之低,維護量之大可想而知。
使用 Docker Compose 可以輕松、高效的管理容器,它是一個用于定義和運行多容器 Docker 的應用程序工具
安裝命令:
[root@iZ2ze4m2ri7irkf6h7n8zoZ ~]# curl -L https://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 -v
Docker Compose文件一般命名為docker-compose.yml,并且執行Docker-compose命令時在該文件所在目錄下執行。
Docker Compose 分為三層,分別是工程(project)、服務(service)/引用標簽、容器(container)
例如:
docker-compose.yml # 一個文件代表一個project serveices: # 服務 container-name: # 容器 build: - xxx:xxx network: # 引用標簽 xxx:
下面是一個標準的docker-compose.yml文件
version: "3" # 指定版本 services: # services proxy: # 自定義容器名稱 build: ./proxy # Dockerfile所在目錄,用于構建容器 networks: # 自定義容器網絡 - frontend app: build: ./app networks: - frontend - backend db: image: postgres networks: - backend networks: frontend: driver: custom-driver-1 backend: driver: custom-driver-2 driver_opts: foo: "1" bar: "2"
ps:列出所有運行容器
docker-compose ps
logs:查看服務日志輸出
docker-compose logs
port:打印綁定的公共端口,下面命令可以輸出 eureka 服務 8761 端口所綁定的公共端口
docker-compose port eureka 8761
build:構建或者重新構建服務
docker-compose build
start:啟動指定服務已存在的容器
docker-compose start eureka
stop:停止已運行的服務的容器
docker-compose stop eureka
rm:刪除指定服務的容器
docker-compose rm eureka
up:構建、啟動容器
docker-compose up
kill:通過發送 SIGKILL 信號來停止指定服務的容器
docker-compose kill eureka
pull:下載服務鏡像
docker-compose pull eureka
scale:設置指定服務運氣容器的個數,以 service=num 形式指定
docker-compose scale user=3 movie=3
run:在一個服務上執行一個命令
docker-compose run web bash
依賴:
<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.1 host: ymx.redis port: 6379 password: jedis: pool: max-active: 8 max-wait: -1 max-idle: 500 min-idle: 0 lettuce: shutdown-timeout: 0
controller代碼:
@RestController public class HelloController { @Autowired private RedisTemplate<String, String> redisTemplate; @RequestMapping("/hello/{id}") public String hello(@PathVariable("id") Integer id) { return redisTemplate.opsForValue().get(String.valueOf(id)); } @RequestMapping("/save/{id}/{name}") public String save(@PathVariable("id") Integer id, @PathVariable("name") String name) { try { redisTemplate.opsForValue().set(String.valueOf(id), "Hello " + name + "!"); } catch (Exception e) { return "false"; } return "success"; }
只是將redis自帶的redis.conf做了一點修改
#注釋掉bind 127.0.0.1 # bind 127.0.0.1 -::1 #修改protected-mode yes->no protected-mode no
- mycompose - docker-compose.yml - rd - Dockerfile - redis.conf - sp - Dockerfile - sp_redis-0.0.1-SNAPSHOT.jar
FROM java:8 MAINTAINER YMX "1712229564@qq.com" COPY sp_redis-0.0.1-SNAPSHOT.jar /root/sp_redis-0.0.1-SNAPSHOT.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar","/root/sp_redis-0.0.1-SNAPSHOT.jar"]
FROM redis MAINTAINER ymx 1712229564@qq.com COPY redis.conf /usr/local/etc/redis/redis.conf EXPOSE 6379 CMD ["redis-server","/usr/local/etc/redis/redis.conf" ]
version: "2.8" # 表示該 Docker-Compose 文件使用的是 Version 2 file services: sp-demo: # 指定服務名稱 build: ./sp # 指定 Dockerfile 所在路徑 ports: # 指定端口映射 - "9001:8080" links: - re-demo:ymx.redis # 進行容器鏈接 re-demo: build: ./rd
運行:
[root@iZ2ze4m2ri7i mycompose]# docker-compose up Creating network "mycompose_default" with the default driver Building re-demo Sending build context to Docker daemon 96.77kB Step 1/5 : FROM redis latest: Pulling from library/redis ......
測試:
[root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/save/2/Ymx success [root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/hello/2 Hello Ymx!
看完了這篇文章,相信你對“如何使用Docker Compose快速部署多容器服務”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。