この文章の前提
- Apache、Flask、Dockerが何かということの説明は割愛する
- Dockerはホストマシンにインストール済みのものとして記載する
目的
Apache+Flask環境を他のマシンでも再現できるようにする
用語
- mod_wsgi
Apacheでpythonプログラムを動かすためのモジュール
環境
対象 | バージョン |
---|---|
OS | macOS Mojave (10.14.3) |
Docker | 18.09.0 |
資材
起動方法
- ビルド
$ docker-compose build
- 起動
$ docker-compose up -d
- 確認
$ curl http://localhost:8080/
Hello, Flask!
構成 - コンテナ構築関連(ホスト側)
.
├── Dockerfile
├── README.md
├── docker-compose.yml
└── src
├── adapter.wsgi
├── flask.conf
└── run.py
構成 - アプリケーション関連(コンテナ側)
- mod_wsgiの設定ファイル
/
└── etc/
└── httpd/
└── conf.d/
└── flask.conf★
- アプリケーションディレクトリ
/
└── var/
└── www/
└── projects/
└── test/
├── adapter.wsgi★
└── application/
└── run.py★
構築概要(Dockerfile概要)
-
imageのダウンロード
CentOS7をダウンロード -
変数の設定
アプリケーションディレクトリ等の名前を設定 -
必要なパッケージのインストール
- 依存ライブラリ等
- Apache関連
- python3関連(リポジトリ登録の上、yumでインストール)
- pythonモジュール
- mod_wsgi(上記python3を起動するためyumではなくpipでインストール)
- Flask
-
資材の配備
[[構成 - アプリケーション関連(コンテナ側)](#構成 - アプリケーション関連(コンテナ側)) ] 通りにディレクトリを作成、資材をコピー -
サービスの起動
httpdサービスの自動起動をON
起動時のコマンドを設定 -
Listen Portを設定
コンテナ内のListen Portを設定
参考URL
PythonのFlaskを初めて触ってから30分で本番環境にデプロイ+ HTTPS通信まで完成
CentOS7にPython3をインストール