pc端網(wǎng)站營(yíng)銷百度手機(jī)怎么刷排名多少錢
Docker Compose 的詳細(xì)講解與實(shí)際應(yīng)用
-
什么是 Docker Compose?
Docker Compose 是一個(gè)工具,用于定義和運(yùn)行多容器 Docker 應(yīng)用。
通過(guò)一個(gè)docker-compose.yml
文件,可以同時(shí)啟動(dòng)多個(gè)服務(wù),簡(jiǎn)化多容器管理。 -
Docker Compose 的核心功能
- 服務(wù)定義:通過(guò) YAML 文件描述服務(wù)的構(gòu)建和運(yùn)行方式。
- 網(wǎng)絡(luò)通信:服務(wù)間自動(dòng)創(chuàng)建網(wǎng)絡(luò)通信,無(wú)需額外配置。
- 依賴管理:可以定義服務(wù)間的啟動(dòng)順序。
- 多環(huán)境支持:通過(guò)
.env
文件實(shí)現(xiàn)環(huán)境變量管理。
實(shí)際應(yīng)用場(chǎng)景:部署微服務(wù)應(yīng)用
場(chǎng)景:一個(gè)應(yīng)用有三個(gè)服務(wù):
web
服務(wù):前端 Web 應(yīng)用,使用 Nginx。app
服務(wù):后端服務(wù),使用 Python Flask。db
服務(wù):數(shù)據(jù)庫(kù),使用 MySQL。
優(yōu)化后的文件結(jié)構(gòu)
myapp/
├── docker-compose.yml
├── app/
│ ├── Dockerfile
│ ├── app.py
│ └── requirements.txt
└── db/
docker-compose.yml 文件
version: '3.8'services:web:image: nginx:latestports:- "8080:80"networks:- myapp_networkapp:build:context: ./appdockerfile: Dockerfilenetworks:- myapp_networkdepends_on:- dbdb:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: myappnetworks:- myapp_networknetworks:myapp_network:driver: bridge
app/Dockerfile 文件
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
app/requirements.txt 文件
flask
mysql-connector-python
app/app.py 文件
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Docker Compose!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
-
操作步驟
- 構(gòu)建并啟動(dòng)服務(wù):
docker-compose up --build
- 查看運(yùn)行的容器:
docker-compose ps
- 停止服務(wù):
docker-compose down
- 查看容器日志:
docker-compose logs
- 構(gòu)建并啟動(dòng)服務(wù):
-
應(yīng)用網(wǎng)絡(luò)配置
- Docker Compose 默認(rèn)為每個(gè)項(xiàng)目創(chuàng)建獨(dú)立的網(wǎng)絡(luò),服務(wù)之間通過(guò)服務(wù)名稱通信。
- 例如:
app
服務(wù)可以通過(guò)db
直接訪問(wèn)數(shù)據(jù)庫(kù),無(wú)需額外配置 IP 地址。
-
擴(kuò)展:多環(huán)境支持
- 使用
.env
文件管理環(huán)境變量。 - 在
docker-compose.yml
中通過(guò)${VAR_NAME}
引用環(huán)境變量。 - 示例
.env
文件:MYSQL_ROOT_PASSWORD=rootpassword MYSQL_DATABASE=myapp
- 修改
docker-compose.yml
:environment:MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}MYSQL_DATABASE: ${MYSQL_DATABASE}
- 使用
-
總結(jié)
Docker Compose 簡(jiǎn)化了多容器應(yīng)用的管理流程,通過(guò) YAML 文件定義服務(wù)間依賴、網(wǎng)絡(luò)和存儲(chǔ)配置,適合開發(fā)、測(cè)試和生產(chǎn)環(huán)境。