# Python 3.12が入った軽量なLinuxイメージを、コンテナの土台にします。
FROM python:3.12-slim

# Pythonのキャッシュファイルを作らず、ログをすぐ画面へ出力します。
# タイムゾーンは、FX Botの実行時刻に合わせて日本時間へ設定します。
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    TZ=Asia/Tokyo

# これ以降のコマンドは、コンテナ内の/appフォルダで実行します。
WORKDIR /app

# curlはSupercronicのダウンロード、tzdataは日本時間の設定に使用します。
# Supercronicは、crontabに書いた時刻にPythonを実行するためのツールです。
RUN apt-get update \
    && apt-get install -y --no-install-recommends curl tzdata \
    && curl -fsSLo /usr/local/bin/supercronic \
       https://github.com/aptible/supercronic/releases/latest/download/supercronic-linux-amd64 \
    && chmod +x /usr/local/bin/supercronic \
    && rm -rf /var/lib/apt/lists/*

# Pythonで必要なライブラリ一覧を先にコピーし、コンテナへインストールします。
COPY Docker/requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Botの実行に必要なPythonファイルと実行スケジュールだけをコピーします。
# .envやdataフォルダはコピーしないため、Dockerイメージには入りません。
COPY *.py ./
COPY Docker/crontab ./crontab

# コンテナ起動後はSupercronicを動かし、crontabの実行時刻を監視します。
CMD ["supercronic", "/app/crontab"]
