首頁 科技週邊 IT業界 Docker和Docker的功能深度構成

Docker和Docker的功能深度構成

Feb 08, 2025 am 09:06 AM

The Functional Depth of Docker and Docker Compose

使用Docker Compose和Vultr容器註冊表構建多容器Flask應用

Docker Compose允許用戶使用單個配置文件運行和定義多容器應用程序。它簡化了設置和管理多個容器的過程,從而更容易地開發、測試和部署應用程序。本文將指導您創建一個包含兩個容器的Flask應用程序,使用Vultr容器註冊表(VCR)管理應用程序的Docker鏡像,並利用Docker Compose的多容器功能來管理多個容器。

示例應用程序的創建

以下步驟將引導您創建一個示例應用程序:

  1. 通過Vultr客戶門戶使用Docker市場應用程序部署一個Vultr計算實例。

  2. 使用SSH以非root sudo用戶安全地訪問服務器。

  3. 更新服務器。

  4. 創建一個新的項目目錄並進入該目錄:

    mkdir flask-redis-example
    cd flask-redis-example
  5. 創建一個名為app.py的新文件:

    nano app.py
  6. 添加以下代碼:

    from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)

    保存並退出文件。這段Flask代碼連接到Redis數據庫,並在每次訪問根URL時遞增計數器。

  7. 允許傳入連接到端口5000並重新加載防火牆:

    sudo ufw allow 5000
    sudo ufw reload
  8. 創建一個名為requirements.txt的新文件:

    nano requirements.txt
  9. 添加以下包:

    <code>flask
    redis</code>

    保存並關閉文件。

  10. flask-redis-example目錄內創建另一個目錄並進入該目錄:

     mkdir static
     cd static
  11. 創建一個名為styles.css的新文件:

     nano styles.css
  12. 添加以下代碼:

     body {
         font-family: Arial, sans-serif;
         text-align: center;
         background-color: #f4f4f4;
         margin: 0;
         padding: 0;
     }
    
     h1 {
         color: #333;
         margin-top: 50px;
     }
    
     p {
         font-size: 18px;
         color: #666;
     }

    保存並退出文件。

  13. flask-redis-example目錄內創建另一個目錄並進入該目錄:

     mkdir templates
     cd templates
  14. 創建一個名為index.html的新文件:

     nano index.html
  15. 添加以下代碼:

     <!DOCTYPE html>
     <html>
     <head>
         <title>Flask App</title>
         <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
     </head>
     <body>
         <h1>Hello, World!</h1>
         <p>I have been seen {{ count }} times.</p>
     </body>
     </html>

    保存並退出文件。

使用Vultr容器註冊表

在本節中,您將創建一個Vultr容器註冊表,將您的Docker鏡像上傳到註冊表,並設置一個Docker Compose文件來設置Flask和Redis數據庫的服務。

  1. 部署一個Vultr容器註冊表。

  2. flask-redis-example目錄中創建一個Docker清單:

    nano Dockerfile.flask
  3. 添加以下配置:

    FROM python:3.9-slim
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY app.py .
    COPY static/ ./static/
    COPY templates/ ./templates/
    
    EXPOSE 5000
    
    CMD ["python", "app.py"]

    保存並退出文件。

  4. 構建Docker鏡像:

    docker build -t flask-app .
  5. 登錄到您的Vultr容器註冊表:

    docker login <url> -u <user> -p <password>

    請務必替換<url><user><password>,這些詳細信息在您的Vultr容器註冊表的概述部分提供。

  6. 標記Docker鏡像:

    mkdir flask-redis-example
    cd flask-redis-example
  7. 將鏡像推送到Vultr容器註冊表:

    nano app.py

    推送Docker鏡像後,請在Vultr儀表板上的Vultr容器註冊表的“存儲庫”部分驗證鏡像是否存在。

  8. 創建一個名為docker-compose.yaml的新文件:

    from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)

    保存並退出文件。上述YAML配置定義了兩個服務webredisweb服務從當前目錄(.)構建Flask應用程序,並將容器的端口5000映射到主機的端口5000。它還指定web服務依賴於redis服務。 redis服務使用來自Docker Hub的官方Redis Docker鏡像。

  9. 構建Docker Compose文件:

    sudo ufw allow 5000
    sudo ufw reload

    構建過程完成後,訪問http://:5000上的Flask應用程序。嘗試多次刷新網站,並觀察訪問頁面次數的計數是否遞增。

更多Vultr容器註冊表的使用

  • Vultr容器註冊表與Docker
  • Vultr容器註冊表與Kubernetes
  • 構建vLLM容器鏡像
  • 構建Llama.cpp容器鏡像
  • 構建PyTorch容器鏡像

最佳實踐

  • 保持docker-compose.yaml文件井然有序且有良好的文檔記錄。
  • 使用命名卷來持久化數據,而不是綁定主機目錄。
  • 使用環境變量來存儲敏感數據,例如密碼和API密鑰。
  • 使用Docker Compose的內置命令,例如docker-compose updocker-compose downdocker-compose ps來管理容器。

結論

在本文中,您創建了一個包含兩個容器的Flask應用程序,使用了Vultr容器註冊表來管理應用程序的Docker鏡像,並利用了Docker Compose的多容器功能來管理多個容器。

本文由Vultr贊助。 Vultr是全球最大的私營雲計算平台。 Vultr深受開發人員喜愛,已為185個國家的150多萬客戶提供靈活、可擴展的全球雲計算、雲GPU、裸機和雲存儲解決方案。了解更多關於Vultr的信息

以上是Docker和Docker的功能深度構成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

Rimworld Odyssey如何釣魚
1 個月前 By Jack chen
Kimi K2:最強大的開源代理模型
1 個月前 By Jack chen
我可以有兩個支付帳戶嗎?
4 週前 By 下次还敢

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1602
29
PHP教程
1506
276
勒索軟件攻擊具有巨大的財務影響&ndash;但是Ciso擔心仍然阻止公司付款 勒索軟件攻擊具有巨大的財務影響&ndash;但是Ciso擔心仍然阻止公司付款 Jul 12, 2025 am 12:59 AM

根據最近的一項調查,勒索軟件攻擊帶來了450萬美元的平均恢復成本,該調查還發現,過去一年中,許多企業受到了惡意軟件的影響。

Red Hat可以讓開發人員自由訪問Rhel&ndash;您需要知道的 Red Hat可以讓開發人員自由訪問Rhel&ndash;您需要知道的 Jul 13, 2025 am 12:49 AM

Red Hat推出了一個新的自助服務平台,旨在更容易訪問其開發人員計劃。紅帽企業Linux for Business Developers Initiative旨在幫助開發團隊建立,測試和部署

微軟去年在其呼叫中心使用AI節省了5億美元&ndash;這是其他所有人都需要的跡象 微軟去年在其呼叫中心使用AI節省了5億美元&ndash;這是其他所有人都需要的跡象 Jul 12, 2025 am 01:17 AM

一位高級主管說,去年微軟通過在各種關鍵業務運營中實施AI來節省了超過5億美元。

Atlassian說,AI為軟件開發人員創建了一個'意外的悖論”&ndash;他們每週節省超過10個小時,但他們仍然過度勞累,損失了相同的時間 Atlassian說,AI為軟件開發人員創建了一個'意外的悖論”&ndash;他們每週節省超過10個小時,但他們仍然過度勞累,損失了相同的時間 Jul 14, 2025 am 01:28 AM

新研究表明,軟件開發人員每週通過AI工具節省一整天的工作,但他們在其他關鍵領域卻浪費了時間。

勒索軟件繁榮沒有顯示出釋放的跡象&ndash;這些群體引起了最多的混亂 勒索軟件繁榮沒有顯示出釋放的跡象&ndash;這些群體引起了最多的混亂 Jul 16, 2025 am 01:38 AM

在今年的前六個月中,勒索軟件襲擊急劇激增,美國企業,中小型企業(SMB)以及製造公司受到了特別影響。根據Nordstellar收集的數據,從Januar收集

隨著工具的蔓延,MSP被燒毀並過度勞累,並且它的複雜性增長&ndash;但是地平線上有光 隨著工具的蔓延,MSP被燒毀並過度勞累,並且它的複雜性增長&ndash;但是地平線上有光 Jul 21, 2025 am 12:04 AM

MSP在2025年遇到了廣泛的困難,但它們仍然具有韌性並繼續前進。這是Auvik 2025 IT趨勢報告的關鍵收穫,該報告概述了當前面臨的主要挑戰,並管理了服務。

大多數工程師繞過安全控制,以完成其工作&ndash;由於零信任的抱負尚未得到滿足 大多數工程師繞過安全控制,以完成其工作&ndash;由於零信任的抱負尚未得到滿足 Jul 25, 2025 am 02:31 AM

數量驚人的工程師僅僅是為了執行其日常任務,即使退出公司後,許多人仍在保持訪問權限。根據代表Tailscale進行的最近進行的調查,其中83%的調查以及Eng和Eng進行了訪問。

Extrahop以新加坡擴展為基礎Apac動量 Extrahop以新加坡擴展為基礎Apac動量 Jul 16, 2025 am 12:46 AM

Extrahop宣布向新加坡進行了重大擴展,旨在滿足整個Apac地區對網絡檢測和響應平台(NDR)平台的不斷增長。通過擴展其全球業務,該公司旨在更好地支持E

See all articles