独自のDockerfileを使用したカスタム・ビルドのデプロイについて

デフォルトのDockerfileは、ベースライン・イメージ(fnproject/python:3.9-dev)からイメージを構築し、様々な最新バージョンの依存パッケージが欠落している可能性があります。作成したDockerイメージをより詳細に制御する場合は、独自のDockerfileを作成できます。ファンクションをビルドまたはデプロイすると、OCI FunctionsはカスタムDockerfileの手順を使用してDockerイメージを構築します。

すべてのパッケージの更新について

デフォルトのDockerfileのコピーを作成し、次のコマンドを含めてパッケージを最新バージョンで更新します。このコマンドは、セキュリティ更新を含むすべてのパッケージを最新バージョンで更新します。Dockerfileをfunc.yamlファイルを含むディレクトリに保存します。
RUN microdnf update

最終バージョンのDockerfileは次のようになります。

FROM fnproject/python:3.9-dev as build-stage

WORKDIR /function

ADD requirements.txt /function/

                                           RUN pip3 install --target /python/  --no-cache --no-cache-dir -r requirements.txt &&\

                                               rm -fr ~/.cache/pip /tmp* requirements.txt func.yaml Dockerfile .venv &&\

                                               chmod -R o+r /python

ADD . /function/

RUN rm -fr /function/.pip_cache

FROM fnproject/python:3.9

WORKDIR /function

COPY --from=build-stage /python /python

COPY --from=build-stage /function /function

RUN chmod -R o+r /function

ENV PYTHONPATH=/function:/python

RUN microdnf update

ENTRYPOINT ["/python/bin/fdk", "/function/func.py", "handler"]

特定のパッケージの更新について

Dockerfileに次のコマンドを追加することで、特定のCVEまたはアドバイザを更新できます(すべてのパッケージを更新しない場合)。
RUN microdnf install dnf

RUN dnf upgrade --cve CVE-2021-0342

RUN dnf upgrade --advisory ELBA-2024-6977