Docker和Docker的功能深度構成
使用Docker Compose和Vultr容器註冊表構建多容器Flask應用
Docker Compose允許用戶使用單個配置文件運行和定義多容器應用程序。它簡化了設置和管理多個容器的過程,從而更容易地開發、測試和部署應用程序。本文將指導您創建一個包含兩個容器的Flask應用程序,使用Vultr容器註冊表(VCR)管理應用程序的Docker鏡像,並利用Docker Compose的多容器功能來管理多個容器。
示例應用程序的創建
以下步驟將引導您創建一個示例應用程序:
-
通過Vultr客戶門戶使用Docker市場應用程序部署一個Vultr計算實例。
-
使用SSH以非root sudo用戶安全地訪問服務器。
-
更新服務器。
-
創建一個新的項目目錄並進入該目錄:
mkdir flask-redis-example cd flask-redis-example
-
創建一個名為
app.py
的新文件:nano app.py
-
添加以下代碼:
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時遞增計數器。
-
允許傳入連接到端口5000並重新加載防火牆:
sudo ufw allow 5000 sudo ufw reload
-
創建一個名為
requirements.txt
的新文件:nano requirements.txt
-
添加以下包:
<code>flask redis</code>
保存並關閉文件。
-
在
flask-redis-example
目錄內創建另一個目錄並進入該目錄:mkdir static cd static
-
創建一個名為
styles.css
的新文件:nano styles.css
-
添加以下代碼:
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; }
保存並退出文件。
-
在
flask-redis-example
目錄內創建另一個目錄並進入該目錄:mkdir templates cd templates
-
創建一個名為
index.html
的新文件:nano index.html
-
添加以下代碼:
<!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數據庫的服務。
-
部署一個Vultr容器註冊表。
-
在
flask-redis-example
目錄中創建一個Docker清單:nano Dockerfile.flask
-
添加以下配置:
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"]
保存並退出文件。
-
構建Docker鏡像:
docker build -t flask-app .
-
登錄到您的Vultr容器註冊表:
docker login <url> -u <user> -p <password>
請務必替換
<url>
、<user>
和<password>
,這些詳細信息在您的Vultr容器註冊表的概述部分提供。 -
標記Docker鏡像:
mkdir flask-redis-example cd flask-redis-example
-
將鏡像推送到Vultr容器註冊表:
nano app.py
推送Docker鏡像後,請在Vultr儀表板上的Vultr容器註冊表的“存儲庫”部分驗證鏡像是否存在。
-
創建一個名為
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配置定義了兩個服務
web
和redis
。web
服務從當前目錄(.)構建Flask應用程序,並將容器的端口5000映射到主機的端口5000。它還指定web
服務依賴於redis
服務。redis
服務使用來自Docker Hub的官方Redis Docker鏡像。 -
構建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 up
、docker-compose down
和docker-compose ps
來管理容器。
結論
在本文中,您創建了一個包含兩個容器的Flask應用程序,使用了Vultr容器註冊表來管理應用程序的Docker鏡像,並利用了Docker Compose的多容器功能來管理多個容器。
本文由Vultr贊助。 Vultr是全球最大的私營雲計算平台。 Vultr深受開發人員喜愛,已為185個國家的150多萬客戶提供靈活、可擴展的全球雲計算、雲GPU、裸機和雲存儲解決方案。了解更多關於Vultr的信息
以上是Docker和Docker的功能深度構成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

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

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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