最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年02月20日 15:16:15   作者:芥末拌飯  
這篇文章主要為大家介紹了docker-compose統(tǒng)一管理多個(gè)容器使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在我們使用Docker時(shí),如果需要運(yùn)行多個(gè)容器,在沒(méi)有Docker-compose之前,你可能需要一個(gè)個(gè)的定義和啟動(dòng)。

docker-compose誕生之后,你只需要把這些容器、依賴關(guān)系、端口映射等配置在一個(gè)yaml文件中即可,大大提升了管理效率。今天就以一個(gè)Python項(xiàng)目來(lái)說(shuō)說(shuō)Docker-compose的使用步驟。

Docker-compose目錄樹(shù)

flask項(xiàng)目中要用到mysql,因此我們準(zhǔn)備2個(gè)容器:mysql鏡像、flask項(xiàng)目鏡像。

flask代碼目錄如下:

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

flask目錄下文件

首先來(lái)編寫MySQL連接文件settings.py:

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

再編寫代碼文件manage.py,代碼很簡(jiǎn)單,就是開(kāi)啟一個(gè)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()

進(jìn)程管理方面,我們使用gunicorn來(lái)管理服務(wù),因此編寫gunicorn配置文件gunicorn_conf.py:

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

接著,我們來(lái)編寫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項(xiàng)目依賴文件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)成(一個(gè)web服務(wù)器和一個(gè)數(shù)據(jù)庫(kù))、使用的Docker鏡像、鏡像間的連接、掛載到容器的數(shù)據(jù)卷、服務(wù)開(kāi)放的端口。

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容器,啟動(dòng)時(shí)會(huì)先啟動(dòng)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)用同處在一個(gè)網(wǎng)絡(luò),這樣才能保證容器間的連通性。 當(dāng)然保證容器間的連通性,還有其他方式,如用--link配置。用networks配置起來(lái)更加方便。

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

docker-compose up -d

服務(wù)正常開(kāi)啟,來(lái)測(cè)試一下兩個(gè)容器的連通性。

進(jìn)入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

說(shuō)明容器間互聯(lián)成功。整個(gè)項(xiàng)目就運(yùn)行起來(lái)了。

小結(jié)

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

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

相關(guān)文章

  • idea使用docker插件一鍵部署項(xiàng)目的操作方法

    idea使用docker插件一鍵部署項(xiàng)目的操作方法

    這篇文章主要介紹了idea使用docker插件一鍵部署項(xiàng)目的操作方法,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-04
  • docker配置pytorch環(huán)境來(lái)進(jìn)行訓(xùn)練的方法步驟

    docker配置pytorch環(huán)境來(lái)進(jìn)行訓(xùn)練的方法步驟

    本文主要介紹了docker配置pytorch環(huán)境來(lái)進(jìn)行訓(xùn)練的方法步驟,從零開(kāi)始配置,包括換源,安裝下載,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Docker常用命令Study03詳解

    Docker常用命令Study03詳解

    這篇文章主要介紹了Docker常用命令Study03詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • chatgpt-web之docker打包流程

    chatgpt-web之docker打包流程

    這篇文章主要介紹了chatgpt-web中docker的打包流程,文中有詳細(xì)的代碼示例,對(duì)學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • docker如何查看容器/刪除(所有)容器/刪除鏡像

    docker如何查看容器/刪除(所有)容器/刪除鏡像

    這篇文章主要介紹了docker如何查看容器/刪除(所有)容器/刪除鏡像問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker安裝FTP服務(wù)器的方法步驟

    Docker安裝FTP服務(wù)器的方法步驟

    FTP是一種傳輸協(xié)議,本文主要介紹了Docker安裝FTP服務(wù)器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 利用nexus作為私庫(kù)進(jìn)行代理docker,進(jìn)行上傳和下載鏡像操作

    利用nexus作為私庫(kù)進(jìn)行代理docker,進(jìn)行上傳和下載鏡像操作

    這篇文章主要介紹了利用nexus作為私庫(kù)進(jìn)行代理docker,進(jìn)行上傳和下載鏡像操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Google和Facebook不使用Docker的原理解析

    Google和Facebook不使用Docker的原理解析

    這篇文章主要介紹了Google和Facebook不使用Docker的原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • linux和docker下mysql安裝方式

    linux和docker下mysql安裝方式

    本文詳細(xì)介紹了在Linux系統(tǒng)中通過(guò)命令行安裝MySQL的步驟,包括編輯yum源、下載并啟動(dòng)MySQL服務(wù)、登錄和修改密碼等操作,同時(shí),文中也提供了在Docker環(huán)境下安裝MySQL的流程,涵蓋了拉取MySQL鏡像、查看運(yùn)行狀態(tài)及登錄MySQL的方法
    2024-09-09
  • 編寫最佳的Dockerfile的方法

    編寫最佳的Dockerfile的方法

    本文給大家分享的是如何編寫最佳的dockerfile的方法,通過(guò)具體實(shí)例幫助大家快速掌握編寫Dockerfile的技巧
    2017-06-06

最新評(píng)論

长海县| 措美县| 洛南县| 富顺县| 安龙县| 浦北县| 上栗县| 临澧县| 上高县| 彭州市| 定陶县| 尼玛县| 札达县| 科尔| 迁西县| 塔城市| 富川| 丰台区| 西乡县| 平安县| 申扎县| 盐津县| 湾仔区| 锦屏县| 明溪县| 阿巴嘎旗| 汽车| 和硕县| 普兰县| 辽阳县| 中超| 偏关县| 梧州市| 台前县| 江源县| 重庆市| 丹阳市| 环江| 巨野县| 九寨沟县| 洪洞县|