跳到主內容

Docker建置Python筆記

建立資料夾  /share/Container/chi

新增檔案 Dockerfile

FROM python:3.11-slim

WORKDIR /app

# 安裝工具與 ODBC Driver
RUN apt-get update && apt-get install -y \
    curl gnupg apt-transport-https unixodbc-dev gcc g++ make \
    && curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /usr/share/keyrings/microsoft.gpg \
    && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/debian/11/prod bullseye main" > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y msodbcsql17 \
    && rm -rf /var/lib/apt/lists/*

# 複製 requirements 並安裝
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 複製程式碼 (包含 app.py, templates/, cert.pem, key.pem)
COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

新增檔案 requirements.txt

APScheduler
Flask
Flask-Cors
Flask-SQLAlchemy
google-api-python-client
google-auth-oauthlib
line-bot-sdk
opencv-python
openpyxl
pandas
pyexcel
pyexcel-xlsx
pyodbc
python-dotenv
pytz
requests
XlsxWriter

bulid影像檔

docker build -t chi .

建立完成後,如果成功你就會看到有 chi 這個 image

接下來就可以用這個image來建置 flask

新增5099 port的flask,建立資料夾  /share/Container/chi5099,把 app.py 及 templates ( app.py 裡的port用5000 )

docker build -t chi .
docker run -d --name chi5099 \
  -p 5099:5000 \
  -v /share/Container/chi5099:/app \
  chi

由於範例要有連 pyodbc,因此有額外安裝 msodbcsql17,如果沒用到可以調整