Flask 留言板(留言存入檔案 + Docker 版本)
這個 Flask 留言板不僅能提交留言,還會 將留言儲存至檔案 (messages.txt
),讓留言可以保留。
1. 建立 Flask 留言板
1.1 建立 app.py
在 C:\flask_board
目錄內,建立 app.py
:
from flask import Flask, request, render_template
import os
app = Flask(__name__)
# 設定留言儲存檔案
MESSAGE_FILE = "messages.txt"
# 確保檔案存在
if not os.path.exists(MESSAGE_FILE):
open(MESSAGE_FILE, "w").close()
# 讀取留言
def load_messages():
messages = []
with open(MESSAGE_FILE, "r", encoding="utf-8") as file:
for line in file:
parts = line.strip().split(":", 1)
if len(parts) == 2:
messages.append({'name': parts[0], 'message': parts[1]})
return messages
# 儲存留言
def save_message(name, message):
with open(MESSAGE_FILE, "a", encoding="utf-8") as file:
file.write(f"{name}: {message}\n")
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
name = request.form.get('name')
message = request.form.get('message')
if name and message:
save_message(name, message)
messages = load_messages()
return render_template('index.html', messages=messages)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
這個 Flask 應用做了什麼?
- 留言存到
messages.txt
。 - 讀取檔案內容顯示留言。
- 確保留言不會因為重啟 Flask 而消失。
1.2 建立 templates/index.html
在 C:\flask_board\templates
目錄內,建立 index.html
:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask 留言板</title>
</head>
<body>
<h1>Flask 留言板</h1>
<form method="post">
<label>姓名:</label>
<input type="text" name="name" required>
<br>
<label>留言:</label>
<textarea name="message" required></textarea>
<br>
<button type="submit">提交留言</button>
</form>
<h2>留言列表</h2>
<ul>
{% for msg in messages %}
<li><strong>{{ msg.name }}</strong>: {{ msg.message }}</li>
{% endfor %}
</ul>
</body>
</html>
這個 HTML:
- 提供表單讓使用者提交留言
- 顯示所有留言
2. 建立 Dockerfile
在 C:\flask_board
內,建立 Dockerfile
:
# 使用 Python 3.10 作為基礎映像
FROM python:3.10
# 設定工作目錄
WORKDIR /app
# 複製當前目錄的所有檔案到容器內
COPY . .
# 安裝 Flask
RUN pip install flask
# 設定留言存儲檔案(確保 messages.txt 存在)
RUN touch messages.txt
# 啟動 Flask 伺服器
CMD ["python", "app.py"]
3. 建立 Docker 映像檔
回到 PowerShell,進入 C:\flask_board
:
cd C:\flask_board
執行:
docker build -t flask_board .
這會 建立 Docker 映像檔,名稱為 flask_board
。
4. 運行 Flask 容器
執行:
docker run -d -p 5000:5000 -v C:\flask_board:/app flask_board
這樣:
-d
:讓 Flask 在背景運行-p 5000:5000
:將本機5000
port 對應到 Docker 內的 Flask 伺服器-v C:\flask_board:/app
:掛載本機資料夾到 Docker 容器,確保留言檔案持久化
5. 訪問 Flask 留言板
打開 瀏覽器,訪問:
http://localhost:5000/
- 輸入姓名 & 留言
- 點擊提交
- 留言會寫入
messages.txt
,並顯示在頁面上 - 重啟容器後,留言仍然存在!
6. 如何更新 Flask 應用?
如果你修改 app.py
或 index.html
,只要 重啟容器,不用重新 build
:
docker restart <容器ID>
如果你 修改了 Dockerfile
,則需要:
docker stop <容器ID>
docker rm <容器ID>
docker build -t flask_board .
docker run -d -p 5000:5000 -v C:\flask_board:/app flask_board
7. 停止 & 刪除容器
如果你想停止 Flask 伺服器:
docker ps # 找到運行中的容器 ID
docker stop <容器ID>
如果要刪除容器:
docker rm <容器ID>
如果要刪除 Docker 映像:
docker rmi flask_board
這個版本的 Flask 留言板:
✅ 留言存到檔案 (messages.txt
),可持久化
✅ 使用 Docker 容器運行
✅ Volume 掛載,修改內容不需要重建映像檔
這樣你的 Flask 留言板就完整了!🚀
沒有留言:
張貼留言