背景
作成したアプリが追加実装でDBと接続することになったが、デプロイしたところエラーが発生。
Dockerfileに追加で設定が必要とのこと。
App Serviceにデプロイするところまでは以下の記事の方法でできます。
Dockerfileを修正
こちらに記載されてる内容をDockerfileに追記する必要がある。
確かにローカルで実装する時に導入したodbcドライバーをApp Serviceの環境にも入れなければいけないのに、どこにも記載してなかった...
FROM python:3.9
WORKDIR /code
COPY requirements.txt .
RUN apt-get update && apt-get -y upgrade
# 以下を追記
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql18 && \
ACCEPT_EULA=Y apt-get install -y mssql-tools18 unixodbc-dev
RUN echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc && \
. ~/.bashrc
RUN pip install --no-cache-dir --upgrade -r requirements.txt
COPY . .
EXPOSE 3100
CMD ["gunicorn", "main:app"]
最後に
Pipelineではデプロイが成功してるのに、Webアプリを立ち上げると503エラーが発生してたので気づくまで時間がかかりました。
ログストリームには「odbcがありません」と記載されてるので、ログストリームをちゃんと確認しよう。