- Macなどでは標準で2が入ってしまっているため、ホストを汚さないためにコンテナ内で作業することにしました
必要なもの
ファイル構成
.- docker-compose.yml
|- Dockerfile
|- src/
|- docker.sh
docker-compose.yml
version: '3'
services:
python3:
container_name: python3
build: .
tty: true
ports:
- 8000:8000
volumes:
- ./src:/root/opt
- build: Dockerfileのあるパスを指定
- tty: 起動しっぱなしにするかどうか
- volumes: コンテナ内のフォルダ(右)とホストのフォルダ(左)を同期させる
Dockerfile
FROM python:3.8-slim-buster as runner
WORKDIR /root/opt
RUN python -m pip install numpy && \
python -m pip install pandas && \
python -m pip install matplotlib
EXPOSE 8000
- Python3.8を選んでます。
- 初めからインストールしておきたいライブラリがあれば記述しておきます
- ホスト(自分のPC)とやりとりするためのポート
docker.sh
# !/bin/sh
docker-compose up -d
docker-compose exec python3 sh
docker-compose down
- docker-cmposeを使うためのスクリプト
- 一行目でコンテナの起動
- 二行目で立ち上げたうち、python3というサービス名のものにアクセス
使い方
- docker-composeと同じ階層で
bash docker.sh
を叩く
- 作業DIR(ローカルでいうsrc)に入るので、そこで作業をする
- 作業が終わったら
exit
でターミナルを抜ける
- docker.shの5行目が勝手に走り出すので、
docker-compose down
が勝手に行われる
- 軽量のalpineでコンテナを作ろうとしてたところ、こちらのサイトで「Pythonにはalpineはやめたほうがいい」とあったので、モリモリのbusterを使うことにした