oracle instant client ダウンロード
ホストはwindowsでもコンテナの中はlinuxになるのでlinux用をダウンロードする!!!!!
Dockerfile(dockerimageを作る設計図)を作成する。
# ベースイメージとしてPython 3.12.3の軽量バージョンを使用
FROM python:3.12.3-slim
# 作業ディレクトリを作成
WORKDIR /app
# Oracle Instant Client のライブラリをダウンロードして配置
RUN mkdir -p /opt/oracle && \
apt-get update && \
apt-get install -y libaio1 curl unzip
# Instant Clientファイルをコピー
COPY instantclient_21_12 /opt/oracle/instantclient_21_12
# Oracle Instant Clientのライブラリのパスを環境変数に設定
ENV LD_LIBRARY_PATH="/opt/oracle/instantclient_21_12:$LD_LIBRARY_PATH"
ENV ORACLE_HOME="/opt/oracle/instantclient_21_12"
# Instant Clientの展開と確認
RUN ls -l /opt/oracle/instantclient_21_12 && \
ls -l /opt/oracle/instantclient_21_12/libclntsh.so
# Pipを最新バージョンにアップデート
RUN pip install --upgrade pip
# requirements.txtをコンテナにコピー
COPY requirements.txt .
# 必要なPythonパッケージをインストール
RUN pip install --no-cache-dir -r requirements.txt
# アプリケーションファイルをすべてコンテナにコピー
COPY . .
# 環境変数の設定
ENV FLASK_APP=flaskr
ENV FLASK_ENV=development
# ポート8083を公開
EXPOSE 8083
# アプリを起動
CMD ["flask", "run", "--host=0.0.0.0", "--port=8083", "--debug"]
【やっていること】
コンテナの中に ディレクトリを作成する
app COPY . .を実行した際に ホストのファイルがappにコピペされる。
/opt/oracle/
環境変数の設定
公開ポートの指定
Flask起動コマンド
Dockerfileからdockerimage(コンテナの設計図)作成。
image作成コマンド
docker build -t lossamount-flask-app .
docker-compose-yamlの作成
version: '3'
services:
flask-app:
build: .
ports:
- "8083:8083"
volumes:
- .:/app
environment:
FLASK_ENV: development
FLASK_APP: flaskr
ORACLE_HOME: /opt/oracle/instantclient_21_12
LD_LIBRARY_PATH: /opt/oracle/instantclient_21_12:$LD_LIBRARY_PATH
command: flask run --host=0.0.0.0 --port=8083 --debug
【やっていること】
コンテナ起動に関する設定を書いてある。
設定ファイルを使うことで、コンテナ起動を用意にできる。
コンテナ起動コマンド
docker-compose up -d