文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用docker-compose统一管理多个容器

2023-07-05 04:23

关注

今天小编给大家分享一下怎么使用docker-compose统一管理多个容器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Docker-compose目录树

flask项目中要用到mysql,因此我们准备2个容器:mysql镜像、flask项目镜像。

flask代码目录如下:

.├── docker-compose.yml├── flask│   ├── Dockerfile│   ├── __init__.py│   ├── gunicorn_conf.py│   ├── manage.py│   ├── requirements.txt│   └── settings.py└── mysql

flask目录下文件

首先来编写MySQL连接文件settings.py:

import pymysqldb = pymysql.connect(    host='mysql',    port=3306,    user='root',    password='root123456')

再编写代码文件manage.py,代码很简单,就是开启一个flask服务,需要用到上述的mysql服务:

from flask import Flaskfrom settings import dbapp = Flask(__name__)def mysql_test():    cursor = db.cursor()    sql = "show databases"    cursor.execute(sql)    res = cursor.fetchall()    cursor.close()    db.close()    return res @app.route('/')def index():    res = mysql_test()    re_list = []    for row in res:        re_list.append(row[0])    return "res: {}".format(re_list)if __name__ == '__main__':    app.run()

进程管理方面,我们使用gunicorn来管理服务,因此编写gunicorn配置文件gunicorn_conf.py:

worker = 4worker_class = "gevent"bind = "0.0.0.0:5000"

接着,我们来编写Dockerfile:

FROM python:3.7-slimCOPY . /homeWORKDIR /homeRUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleCMD gunicorn -c gunicorn_conf.py manage:app

然后,再编写一下flask项目依赖文件requirements.txt:

Flask==2.0.3gunicorn==20.1.0gevent==21.12.0PyMySQL==1.0.2cryptography==39.0.0

docker-compose.yml文件编写

编写docker-compose.yml,我们要描述应用的构成(一个web服务器和一个数据库)、使用的Docker镜像、镜像间的连接、挂载到容器的数据卷、服务开放的端口。

version: '3'services:  mysql:    image: mysql:latest    restart: always    networks: # 配置网络      - diy_net    expose:      - 3310    ports:      - "3310:3306"    environment:   # 环境变量(可防止泄露不必要的数据)      - MYSQL_ROOT_PASSWORD=root123456  flask:    build: ./flask    depends_on:  # 依赖于mysql容器,启动时会先启动mysql      - mysql    networks:   # 配置网络      - diy_net    environment:       - MYSQL_USER=root      - MYSQL_PASSWORD=root123456      - MYSQL_DB=docker_db    ports:      - "5000:5000"networks:  # 网络设置  diy_net:    name: diy_net    external: true  # 表示已有的网络

备注: networks的配置是为了让flask应用和mysql应用同处在一个网络,这样才能保证容器间的连通性。 当然保证容器间的连通性,还有其他方式,如用--link配置。用networks配置起来更加方便。

代码完成后,开启服务:

docker-compose up -d

怎么使用docker-compose统一管理多个容器

服务正常开启,来测试一下两个容器的连通性。

进入flask容器docker-compose exec flask bash

ping一下mysql容器:ping -c 3 mysql,显示信息如下:

# ping -c 3 mysqlPING mysql (172.18.0.3) 56(84) bytes of data.64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=1 ttl=64 time=0.717 ms64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=2 ttl=64 time=0.432 ms64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=3 ttl=64 time=0.376 ms--- mysql ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2005msrtt min/avg/max/mdev = 0.376/0.508/0.717

说明容器间互联成功。整个项目就运行起来了。

以上就是“怎么使用docker-compose统一管理多个容器”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯