ウチでは外部からのアクセスは外部公開サーバに全て飛ばされていて,slack botの開発をしようとした時に,その外部公開サーバ上で動作させるしかないが,pythonの色々なモジュールとか入れると環境がグチャグチャになるのでそういうことはしたくない.
pyenvでユーザローカルに入れる手もあるが,dockerを多様して外部サーバを動作させている我が家のホストであるので,dockerコンテナを一つくらい増やした方が楽なんじゃないかと思い,pythonを動作させるだけのコンテナを作ってみることにしたのであった.
Dockerfile
./env/Dockerfile
はこんなかんじ.必要なパッケージはRUN
に&&
でつなげる.
FROM python:3-buster
RUN pip install -U pip
CMD [ "/bin/bash" ]
docker-compose.yml
./docker-compose.yml
はこんなかんじ.作業ディレクトリをホームディレクトリにマウントし,そこで実行しちゃう.
version: '3'
services:
python:
build: env
user: "1000:1000"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/passwd:/etc/passwd:ro
- /etc/group:/etc/group:ro
- /workspace:/home/user
tty: true
working_dir: /home/user
実行コマンド
あとは,サーバ上でファイルを編集し,実行する時はこれで環境に入る.
tmuxか何かで画面分割するのがオススメ.
docker-compose run --rm python