欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > docker compose 容器单机编排

docker compose 容器单机编排

2024/10/24 1:58:26 来源:https://blog.csdn.net/m0_66705547/article/details/143038880  浏览:    关键词:docker compose 容器单机编排

 特点介绍

  • 简化多容器应用的管理:使用单个命令即可创建和管理多个容器,大大简化了开发环境的搭建过程。
  • 环境一致性:通过使用相同的配置文件,可以在不同的环境中(如开发、测试、生产)保持一致的服务配置。
  • 服务定义灵活:可以轻松地定义各个服务之间的依赖关系,指定端口映射、卷挂载等。
  • 易于扩展:可以通过简单的命令快速增加或减少服务实例的数量。

安装 

新版本默认安装好了 docker23.0.0以后版本

root@zz:~# docker version
Client: Docker Engine - CommunityVersion:           27.3.1API version:       1.47Go version:        go1.22.7Git commit:        ce12230Built:             Fri Sep 20 11:40:59 2024OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          27.3.1API version:      1.47 (minimum version 1.24)Go version:       go1.22.7Git commit:       41ca978Built:            Fri Sep 20 11:40:59 2024OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.7.22GitCommit:        7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311crunc:Version:          1.1.14GitCommit:        v1.1.14-0-g2c9f560docker-init:Version:          0.19.0GitCommit:        de40ad0
root@zz:~# docker compose version
Docker Compose version v2.29.7

老版本docker 传送门

k8s-生产实例——二进制集群部署 全网最详细保姆级 零基础也能学会——环境准备2 docker docker-compose harbor 安装_harbor二进制安装-CSDN博客

 docker compose文件编写

先放大招,docker run 自动转换docker compose文件

网址:  Composerize

 docker compose 自动转换docker run

网址  Decomposerize

生产实例

示例 1:部署一个简单的 Web 应用 + 数据库

目标
  • 使用 Nginx 作为 Web 服务器
  • 使用 PostgreSQL 作为数据库
  • 将 Web 应用与数据库连接起来
docker-compose.yml
version: '3.8'services:web:image: nginx:latestports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.confdepends_on:- dbdb:image: postgres:latestenvironment:POSTGRES_USER: userPOSTGRESS_PASSWORD: passwordPOSTGRES_DB: mydbvolumes:- postgres_data:/var/lib/postgresql/datavolumes:postgres_data:
nginx.conf
events {}http {server {listen 80;location / {proxy_pass http://web:80;}}
}
操作步骤
  1. 启动服务

    docker-compose up -d

    这条命令将以分离模式启动所有服务。

  2. 查看服务状态

    docker-compose ps
  3. 查看日志

    docker-compose logs -f

    -f 参数表示实时输出日志。

  4. 停止服务

    docker-compose down

    这条命令会停止并删除所有容器、网络和卷。

示例 2:部署一个带有缓存的 Web 应用

目标
  • 使用 Flask 作为 Web 应用
  • 使用 Redis 作为缓存服务
  • 使用 Gunicorn 作为 WSGI 服务器
docker-compose.yml
version: '3.8'services:web:build: .command: gunicorn -w 3 -b 0.0.0.0:5000 app:appports:- "5000:5000"environment:CACHE_URL: redis://cache:6379/0depends_on:- cachecache:image: redis:latestvolumes:app_code:
Dockerfile
FROM python:3.9-slimWORKDIR /appCOPY requirements.txt requirements.txt
RUN pip install -r requirements.txtCOPY . .CMD ["python", "app.py"]
requirements.txt
Flask==2.0.1
gunicorn==20.1.0
redis==3.5.3
app.py
from flask import Flask, request, jsonify
import redisapp = Flask(__name__)
cache = redis.Redis(host='cache', port=6379)@app.route('/')
def index():return "Hello, World!"@app.route('/set/<key>/<value>')
def set_key(key, value):cache.set(key, value)return f"Set {key} to {value}"@app.route('/get/<key>')
def get_key(key):value = cache.get(key)if value:return value.decode('utf-8')else:return "Key not found", 404if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
操作步骤
  1. 构建并启动服务

    docker-compose up --build -d

    --build 参数表示在启动前重新构建服务。

  2. 查看服务状态

    docker-compose ps
  3. 查看日志

    docker-compose logs -f
  4. 停止服务

    docker-compose down

示例 3:部署一个带有负载均衡的多实例 Web 应用

目标
  • 使用 Nginx 作为负载均衡器
  • 使用多个 Flask 实例
  • 使用 PostgreSQL 作为数据库
docker-compose.yml
version: '3.8'services:nginx:image: nginx:latestports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.confdepends_on:- web1- web2web1:build: .command: gunicorn -w 3 -b 0.0.0.0:5000 app:appenvironment:DATABASE_URL: postgresql://user:password@db/mydbweb2:build: .command: gunicorn -w 3 -b 0.0.0.0:5000 app:appenvironment:DATABASE_URL: postgresql://user:password@db/mydbdb:image: postgres:latestenvironment:POSTGRES_USER: userPOSTGRES_PASSWORD: passwordPOSTGRES_DB: mydbvolumes:- postgres_data:/var/lib/postgresql/datavolumes:postgres_data:
nginx.conf
events {}http {upstream web_app {server web1:5000;server web2:5000;}server {listen 80;location / {proxy_pass http://web_app;}}
}
Dockerfile
FROM python:3.9-slimWORKDIR /appCOPY requirements.txt requirements.txt
RUN pip install -r requirements.txtCOPY . .CMD ["python", "app.py"]
requirements.txt
Flask==2.0.1
gunicorn==20.1.0
psycopg2-binary==2.9.1
app.py
from flask import Flask
import os
import psycopg2app = Flask(__name__)def get_db_connection():conn = psycopg2.connect(host='db',database='mydb',user=os.getenv('POSTGRES_USER'),password=os.getenv('POSTGRES_PASSWORD'))return conn@app.route('/')
def index():conn = get_db_connection()cur = conn.cursor()cur.execute('SELECT * FROM mytable LIMIT 1;')result = cur.fetchone()cur.close()conn.close()return str(result)if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
操作步骤
  1. 构建并启动服务

    docker-compose up --build -d
  2. 查看服务状态

    docker-compose ps
  3. 查看日志

    docker-compose logs -f
  4. 停止服务

    docker-compose down

这些示例展示了如何在生产环境中使用 Docker Compose 部署不同类型的应用。通过这些示例,你可以更好地理解和应用 Docker Compose 的强大功能。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com