環境
macOS Monterey
VSCode 1.73.0
docker desktop 4.13.1
docker Engine 20.10.20
docker Compose v2.12.1
Python 3.9.15
Flask 2.2.2
DockerにてCentOS7立ち上げ
Dockerインストール
https://qiita.com/suzukiti/items/391bfce352ba94ad3f0d#docker%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
なんか以前自分が書いたみたいでした。
VSCodeのDev containers拡張機能を使います。(これも上の記事に書いてあった)
コード(結論)
{
"name": "sample_flask_app",
"dockerComposeFile": ["./docker-compose.yml"],
"service": "app",
"workspaceFolder": "/home",
"forwardPorts": ["50000:5000"],
"extensions": [
"streetsidesoftware.code-spell-checker", // スペルミス防止
"mhutchie.git-graph", // Git見やすく
"eamodio.gitlens", // Git見やすく
"oderwat.indent-rainbow", // インデントわかりやすく
"mosapride.zenkaku", // 不必要なミス防止
"ms-python.python",
"KevinRose.vsc-python-indent"
]
}
version: '3.8'
services:
app:
build: ./
container_name: flask-docker
ports:
- "50000:5000"
volumes:
- "/Users/suzukiti/dev/sample_flask_app:/home/sample_flask_app"
command: /bin/bash
tty: true
FROM centos:centos7
RUN mkdir /home/sample_flask_app
補足(直面したエラー)
-
load metadata for docker.io/library/centos:centos7
とserver misbehaving
DNSの問題だそうです。
ホスト(mac)の/etc/resolv.confのnameserverを8.8.8.8にする。 -
The path /User/suzukiti/dev/sample_flask_app is not shared from the host and is not known to Docker.
Userではなく、Usersです。(スペルミス)
それでもエラるなら、docker>Preferences>Resources>File sharingで該当のパスを追加してあげる。 -
Ports are not available
netstat -ao | grep [ポート番号]
で該当ポート使用状況を確認。
変える場合は、
-
devcontainer.json
のforwardPorts
を["Macのポート番号:コンテナ(docker)のポート番号"]
にする -
docker-compose.yml
のports
も"Macのポート番号:コンテナ(docker)のポート番号"
にする
Python3インストール
CentOS7に標準で入っているPythonバージョンは2.x系でEOLなので
3.x系をインストールします。
今回は、3.10.8を使います。
※3.10.8でインストールしようとすると、
centosのopensslのversionが1.1.0より前(1.0.2)なので、
上手くインストールできません。(3.10以降は1.1.0以降が必須みたい)
https://www.python.jp/news/wnpython310/require-openssl11.html
centosにopensslの1.1.0以降を入れればいけますが、
サードパーティのリポジトリを入れたりと、大変なので、今回は3.9.15で行きます。
# システムパッケージをアップデート
yum -y update
# 依存パッケージのインストール;https://github.com/pyenv/pyenv/wiki#suggested-build-environment
yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel git
# make使えないとエラるのでそれも追加
yum install -y make
# pyenvリポジトリをクローン
git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv
# .bash_profileにpyenvのPATHを追加
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
# pyenvバージョン確認
pyenv --version
# 現在のpythonバージョンを確認
python --version
# python3.9.15インストール
pyenv install 3.9.15
# pythonバージョン切り替え
pyenv global 3.9.15
pyenv rehash
# 変更されたか確認
python --version
venv(仮想環境)構築
cd sample_flask_app
# 新環境作成
python3 -m venv venv
# アクティベート
source venv/bin/activate
# バージョン確認
python -V
# pipアップデート
pip install --upgrade pip
# pipバージョン確認
pip -V
# パッケージインストール
pip install [package name]
# インストール済みのパッケージ確認
pip freeze
# ディアクティベート
deactivate
# pipバージョン確認
pip -V
deactivate
前後でおそらくpipのバージョンが異なると思います。
venv構築成功です。
flaskインストール
# 仮想環境アクティベート
cd sample_flask_app
source venv/bin/activate
# インストール
pip install Flask
# バージョン確認
flask --version
所感
時間かかるし、大量にエラるしで、
pythonのインストールが大変でした。
参考になれば幸いです。