Docker Compose 实用指南:从入门到实践

Docker Compose 的两个版本 目前 Docker Compose 有两个主要版本: Docker Compose V1:传统版本,命令为 docker-compose Docker Compose V2:新版本,命令为 docker compose(无连字符) # 检查版本 docker-compose --version # V1 docker compose version # V2 一个简单的 Web 应用示例 让我们从一个简单的 Web 应用开始,它包含一个 Web 服务和一个数据库服务。 创建项目结构 my-web-app/ ├── docker-compose.yaml ├── web/ │ ├── Dockerfile │ ├── app.py │ └── requirements.txt 编写 Web 应用 (app.py) from flask import Flask, jsonify import os import pymysql app = Flask(__name__) @app.route('/') def hello(): return jsonify(message="Hello from Flask!") @app.route('/db') def db_connection(): connection = pymysql.connect( host=os.environ.get('DB_HOST', 'db'), user=os.environ.get('DB_USER', 'user'), password=os.environ.get('DB_PASSWORD', 'password'), database=os.environ.get('DB_NAME', 'mydb'), cursorclass=pymysql.cursors.DictCursor ) try: with connection.cursor() as cursor: cursor.execute("SELECT 1 as result") result = cursor.fetchone() return jsonify(db_connection="成功", result=result) except Exception as e: return jsonify(db_connection="失败", error=str(e)) finally: connection.close() if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) 依赖文件 (requirements.txt) flask==2.0.1 pymysql==1.0.2 Dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . CMD ["python", "app.py"] Docker Compose 文件 (docker-compose.yaml) version: '3' services: web: build: ./web ports: - "5000:5000" environment: - DB_HOST=db - DB_USER=user - DB_PASSWORD=password - DB_NAME=mydb depends_on: - db restart: always db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=mydb - MYSQL_USER=user - MYSQL_PASSWORD=password volumes: - db_data:/var/lib/mysql restart: always volumes: db_data: Docker Compose 核心概念 1. 服务 (Services) 服务是应用的组成部分,在上面的例子中,我们定义了两个服务: ...

2025-04-08 · 3 分钟 · 1232 字 · Niuhe

制作Docker镜像模拟服务器节点

...

2024-05-05 · 1 分钟 · 421 字 · Niuhe

docker基本使用

CheatSheet Docker 核心架构: 客户端 Client 服务器 Docker daemon 镜像 Image Registry 容器 Container 容器基本技术: cgroup 资源限额 namespace 资源隔离 Mount UTS IPC PID Network User Docker 采用 C/S 架构,客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 host 上,客户端也可以通过 socket 或者 REST API 和远程服务器通信。docker 客户端是和服务器通信的命令行工具。服务器负责创建、运行、监控容器,构建、存储镜像。镜像是一个只读模板,通过镜像可以创建容器。容器就是镜像运行的实例。Registry 是存放镜像的仓库。 ...

2021-01-23 · 3 分钟 · 1235 字 · Niuhe