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

Docker和Docker的功能深度構成

Lisa Kudrow
發布: 2025-02-08 09:06:11
原創
725 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板