Docker Compose使用詳解
阿新 • • 發佈:2022-04-12
Docker Compose
介紹
Docker Compose是為了更加輕鬆高效的管理多個容器。可以自動的進行容器編排
安裝
- 下載Docker-Compose
# 安裝docker-compose
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
顯示安裝成功
- 授權
sudo chmod +x docker-compose
體驗
- 建立一個資料夾
mkdir composetest cd composetest
- 編寫app.py指令碼
import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times.\n'.format(count)
- 建立依賴
vim requirements.txt
# 儲存下面兩個依賴
flask
redis
- 建立Dockerfile
vim Dockerfile # 儲存下面值 FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP=app.py ENV FLASK_RUN_HOST=0.0.0.0 RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt RUN pip install -r requirements.txt EXPOSE 5000 COPY . . CMD ["flask", "run"]
- 編寫docker-compose.yml 檔案
version: "3.9"
# 表示有兩個服務web服務,和Redis服務
# web服務用Dockerbuild 命令自定義 redis用官方提供的映象
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
- 使用docker-compose up 命令執行
- 訪問成功
yaml規則
docker-compose核心!
docker-compose配置詳解:https://docs.docker.com/compose/compose-file/compose-file-v3/
#核心總共有三個 版本 服務 其他配置
#版本
version: ''
#服務
services:
服務1: web
image
build
network
服務2: web
image
build
network
.....
# 其他配置
network:
volumes:
configs:
:
WordPress搭建
- 建立目錄
[root@pinyoyougou-docker /]# mkdir my_wordpress
[root@pinyoyougou-docker /]# cd my_wordpress
- 編寫yaml指令碼
version: "3.9"
services:
db:
#映象
image: mysql:5.7
#卷掛載
volumes:
- db_data:/var/lib/mysql
#一直重啟
restart: always
#環境配置
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
#依賴db 讓db服務先執行
depends_on:
- db
#映象
image: wordpress:latest
#卷掛載
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}
- 執行docker-compose命令
docker-compose up -d #後臺執行
實戰
- 建立springboot專案
2. 編寫程式碼
package com.fyx.dockercompose.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author yuanxin
* @Date 2021/7/2 15:52
**/
@RestController("/test")
public class RedisController {
@Autowired
private RedisTemplate redisTemplate;
@GetMapping(value = "incr")
public Long test() {
Long add = redisTemplate.opsForValue().increment("add");
return add;
}
}
- 編寫dockerfile
FROM java:8
MAINTAINER [email protected]
COPY ./target/docker-compose.jar ./
EXPOSE 8080
ENTRYPOINT ["java","-jar","docker-compose.jar"]
- 編寫docker-compose
version: "3.9"
services:
my-docker-compose:
build: .
image: my-docker-compose
depends_on:
- redis
ports:
- "8080:8080"
redis:
image: "library/redis:alpine"
- java 配置
# 注意這裡的ip 得是服務名 因為Docker內部網路可以通過域名訪問
spring.redis.host=redis
spring.redis.port=6379
-
打包java服務把Dockerfile,docker-compose 放到Linux伺服器上執行docker-compose up
-
訪問成功
注意
如需重新載入app資源需要使用docker-compose up --build -d
-d 後臺執行
--build 重新構建映象