Diary

Diary

日々学んだことをアウトプットする場として初めてみました

dockerでpythonの環境構築

PythonのDocker環境構築

  • 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が勝手に行われる

ベースとなるLinuxについて

  • 軽量のalpineでコンテナを作ろうとしてたところ、こちらのサイトで「Pythonにはalpineはやめたほうがいい」とあったので、モリモリのbusterを使うことにした