Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot
1 Docker Compose
官方文檔:https://docs.docker.com/compose/install/
1.1 簡介
定義、運(yùn)行多個(gè)容器
YAML file配置文件
single command 命令有哪些
作用:批量容器編排
Compose
version: '2.0' services:web:build:.ports:- "5000:5000"volumes:- .:/code- logvolume01:/var/loglinks:- redisredis:image: redis volumes:logvolume01: {}1.2 安裝
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 國內(nèi)鏡像 curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose授權(quán)
sudo chmod +x /usr/local/bin/docker-compose1.3 yaml規(guī)則
https://docs.docker.com/compose/compose-file/compose-file-v3/
# 3層version: ' ' # 版本 services: # 服務(wù)服務(wù)1:web# 服務(wù)配置imagesbuildnetwork...服務(wù)2:redis...服務(wù)2:redis... # 其他配置 網(wǎng)路/卷、全局規(guī)則 volumes: networks: configs:2 官方 實(shí)戰(zhàn) flask
2.1 創(chuàng)建項(xiàng)目文件
https://docs.docker.com/compose/gettingstarted/
1、創(chuàng)建項(xiàng)目
2、創(chuàng)建 app.py
import timeimport redis from flask import Flaskapp = Flask(__name__) cache = redis.Redis(host='redis', port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/') def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.\n'.format(count)if __name__ == "__main__":app.run(host="0.0.0.0", debug=True)3、requirements.txt
flask redis2.2 創(chuàng)建Dockerfile
# syntax=docker/dockerfile:1 FROM python:3.8-alpine ADD . /code WORKDIR /code COPY requirements.txt requirements.txt RUN pip install -r requirements.txt CMD ["python", "app.py"]- 從 Python 3.7 映像開始構(gòu)建映像。
- 將工作目錄設(shè)置為/code.
- 設(shè)置命令使用的環(huán)境變量flask。
- 安裝 gcc 和其他依賴項(xiàng)
- 復(fù)制requirements.txt并安裝 Python 依賴項(xiàng)。
- 向鏡像添加元數(shù)據(jù)以描述容器正在偵聽端口 5000
- 將項(xiàng)目中的當(dāng)前目錄復(fù)制.到鏡像中的workdir .。
- 將容器的默認(rèn)命令設(shè)置為flask run.
2.3 在Compose文件中定義service
vim docker-compose.yml version: "3.3" services:web:build: . # 自己構(gòu)建鏡像ports:- "5000:5000"redis:image: "redis:alpine" # 拉取鏡像2.4 Build and run your app with Compose
構(gòu)建并運(yùn)行
docker-compose up構(gòu)建并運(yùn)行 – 重構(gòu)
docker-compose up --build構(gòu)建并運(yùn)行 - - 重構(gòu) - 后臺運(yùn)行
docker-compose up --build -d停止:
docker-compose downdocker-compose
以前都是單個(gè)docker run 啟動(dòng)容器
docker-compose 通過docker-compose編寫yaml配置文件、可以通過compose 一鍵啟動(dòng)所有服務(wù),停止
3 實(shí)戰(zhàn) 博客 wordpress
https://docs.docker.com/samples/wordpress/
mkdir my_wordpress cd my_wordpress3.1 docker-compose.yml
version: "3.3"services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:depends_on:- dbimage: wordpress:latestvolumes:- wordpress_data:/var/www/htmlports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpress volumes:db_data: {}wordpress_data: {}啟動(dòng)
docker-compose up4 實(shí)戰(zhàn) spring-boot
4.1 編輯代碼
勾選依賴
Web -> Spring Web
NoSQL -> Spring Data Redis
application.properties
server.port=8080 spring.redis.host=redisHelloController.java
package com.example.springboot.demo.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController public class HelloController {@RequestMapping("/hello")public String hello(){return "hello charles";} }打包項(xiàng)目
4.2 編輯dokcer文件
Dockerfile
FROM java:8COPY *.jar /app.jarCMD ["--server.port=8080"]EXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar"]docker-compose.yml
編排項(xiàng)目
4.3 啟動(dòng)項(xiàng)目
丟到服務(wù)器
- demo-0.0.1-SNAPSHOT.jar
- docker-compose.yml
- Dockerfile
啟動(dòng)
docker-compose up docker-compose up --build -d--build:重新構(gòu)建
-d:后臺模式
學(xué)習(xí)地址
狂神說:https://www.bilibili.com/video/BV1kv411q7Qc
總結(jié)
以上是生活随笔為你收集整理的Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker详细介绍
- 下一篇: docker部署项目 dockerfil