日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 前言
  • Docker-compose目錄樹
    • flask目錄下文件
    • docker-compose.yml文件編寫
  • 小結(jié)

    前言

    在我們使用Docker時,如果需要運行多個容器,在沒有Docker-compose之前,你可能需要一個個的定義和啟動。

    docker-compose誕生之后,你只需要把這些容器、依賴關(guān)系、端口映射等配置在一個yaml文件中即可,大大提升了管理效率。今天就以一個Python項目來說說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 pymysql
    db = pymysql.connect(
        host='mysql',
        port=3306,
        user='root',
        password='root123456'
    )
    

    再編寫代碼文件manage.py,代碼很簡單,就是開啟一個flask服務(wù),需要用到上述的mysql服務(wù):

    from flask import Flask
    from settings import db
    app = 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來管理服務(wù),因此編寫gunicorn配置文件gunicorn_conf.py:

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

    接著,我們來編寫Dockerfile:

    FROM python:3.7-slim
    COPY . /home
    WORKDIR /home
    RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    CMD gunicorn -c gunicorn_conf.py manage:app
    

    然后,再編寫一下flask項目依賴文件requirements.txt:

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

    docker-compose.yml文件編寫

    編寫docker-compose.yml,我們要描述應(yīng)用的構(gòu)成(一個web服務(wù)器和一個數(shù)據(jù)庫)、使用的Docker鏡像、鏡像間的連接、掛載到容器的數(shù)據(jù)卷、服務(wù)開放的端口。

    version: '3'
    services:
      mysql:
        image: mysql:latest
        restart: always
        networks: 	# 配置網(wǎng)絡(luò)
          - diy_net
        expose:
          - 3310
        ports:
          - "3310:3306"
        environment:   # 環(huán)境變量(可防止泄露不必要的數(shù)據(jù))
          - MYSQL_ROOT_PASSWORD=root123456
      flask:
        build: ./flask
        depends_on:  # 依賴于mysql容器,啟動時會先啟動mysql
          - mysql
        networks:   # 配置網(wǎng)絡(luò)
          - diy_net
        environment: 
          - MYSQL_USER=root
          - MYSQL_PASSWORD=root123456
          - MYSQL_DB=docker_db
        ports:
          - "5000:5000"
    networks:  # 網(wǎng)絡(luò)設(shè)置
      diy_net:
        name: diy_net
        external: true  # 表示已有的網(wǎng)絡(luò)
    

    備注: networks的配置是為了讓flask應(yīng)用和mysql應(yīng)用同處在一個網(wǎng)絡(luò),這樣才能保證容器間的連通性。 當然保證容器間的連通性,還有其他方式,如用–link配置。用networks配置起來更加方便。

    代碼完成后,開啟服務(wù):

    docker-compose up -d
    

    docker-compose統(tǒng)一管理多個容器使用詳解

    服務(wù)正常開啟,來測試一下兩個容器的連通性。

    進入flask容器docker-compose exec flask bash

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

    # ping -c 3 mysql
    PING 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 ms
    64 bytes from test-mysql-1.diy_net (172.18.0.3): icmp_seq=2 ttl=64 time=0.432 ms
    64 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 2005ms
    rtt min/avg/max/mdev = 0.376/0.508/0.717
    

    說明容器間互聯(lián)成功。整個項目就運行起來了。

    小結(jié)

    本文以一個簡單的flask項目使用docker-compose構(gòu)建起來,當我們有多個容器,并且容器間有依賴相關(guān)的時候,使用docker-compose來統(tǒng)一管理非常方便。

    以上就是docker-compose統(tǒng)一管理多個容器使用詳解的詳細內(nèi)容,更多關(guān)于docker-compose容器管理的資料請關(guān)注其它相關(guān)文章!

    分享到:
    標簽:Docker 多個 容器 服務(wù)器 詳解
    用戶無頭像

    網(wǎng)友整理

    注冊時間:

    網(wǎng)站:5 個   小程序:0 個  文章:12 篇

    • 51998

      網(wǎng)站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會員

    趕快注冊賬號,推廣您的網(wǎng)站吧!
    最新入駐小程序

    數(shù)獨大挑戰(zhàn)2018-06-03

    數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

    答題星2018-06-03

    您可以通過答題星輕松地創(chuàng)建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學(xué)四六

    運動步數(shù)有氧達人2018-06-03

    記錄運動步數(shù),積累氧氣值。還可偷

    每日養(yǎng)生app2018-06-03

    每日養(yǎng)生,天天健康

    體育訓(xùn)練成績評定2018-06-03

    通用課目體育訓(xùn)練成績評定