1
0

【Docker】入門:pythonが実行できるコンテナを起動(docker-compose使用)

Posted at

はじめに

UdemyでDockerの学習を進めている最中で、途中経過をアウトプットしたいと考えています。
今回は、

pythonが実行できるコンテナをdocker-composeを使って起動したいと思います。
また、ファイルシステムを共有して、pythonファイルやcsvデータをホストPCでも管理出来るようにします。

環境

  • Windows10
  • Docker version 24.0.6

各ファイル

以下の3つのファイルを同じフォルダ階層に作成します。

Dockerfile

今回はpythonのベースイメージを使用し、requirements.txtから必要なライブラリをインストールします。

Dockerfile
FROM python:3

RUN apt-get update

WORKDIR /work
COPY requirements.txt ./
RUN pip install -r requirements.txt

CMD ["/bin/bash"]

requirements.txt

とりあえずnumpyとpandasをインストール

requirements.txt
numpy
pandas

docker-compose.yml

docker-compose.ymlは以下のときに使います。

  • docker runコマンドが長くなるとき
  • 複数のコンテナをまとめて起動するとき

構成は以下の通りです


  • 今からDocker composeを書きます宣言
    • service1
      • service1のパラメータ
      • service2のパラメータ
    • service2
      • service2のパラメータ
      • service2のパラメータ

以下のdockerコマンドをdocker-compose.ymlに書きます。
docker build .
docker run -it -v .:/work [イメージ]

docker-compose.yml
version: '3'

services:
  work-python:
    build: .
    volumes:
      - '.:/work'
    tty: true
    stdin_open: true

ファイルシステムの共有

volumes:
  - '.:/work'

docker run -it -itの部分がこれ↓

tty: true
stdin_open: true

main.py

main.py
import pandas as pd

df = pd.read_csv('train.csv')
print(df)

train.csv

Docker composeを使ってコンテナを起動

作業フォルダには以下のようになっています。

root/
├Dockerfile
├requirements.txt
├docker-compose.yml
├train.csv
└main.py

rootディレクトリに移動し、docker-compose up -dを実行します。
今回はバックグラウンドで動かしておきたいため、デタッチドモード-dを引数に指定します。

docker-compose up -d

docker-compse exec [service] bashでコンテナに入る

docker-compose exec work-python bash

lsコマンドの結果でファイルシステムが共有されていることを確認できました。

root@626584394f9f:/work# ls
Dockerfile  docker-compose.yml  main.py  requirements.txt  train.csv

main.pyを実行できることも確認します。

root@626584394f9f:/work# python main.py
      id  Age  Gender  T_Bil  D_Bil    ALP  ALT_GPT  AST_GOT   TP  Alb  AG_ratio  disease
0      0   60    Male    2.9    1.3  170.9     42.1     37.1  5.5  2.9      1.01        1
1      1   28  Female    0.7    0.1  158.8     26.0     23.9  6.4  3.7      1.36        0
2      2   60    Male   23.1   12.5  962.0     53.0     40.9  6.8  3.3      0.96        1
3      3   20    Male    1.0    0.5  415.9     33.9     39.0  7.0  3.8      1.31        0
4      4   44  Female    0.6    0.3  152.9     40.9     42.0  4.5  2.1      1.04        0
..   ...  ...     ...    ...    ...    ...      ...      ...  ...  ...       ...      ...
886  886   31    Male    0.7    0.3  164.2     30.0     29.0  6.2  3.0      1.07        0
887  887   57  Female    1.0    0.3  130.1     23.9     25.0  6.9  4.1      1.28        1
888  888   54  Female   23.5   12.7  574.0     43.1     47.0  7.2  3.4      0.84        1
889  889   24    Male    1.2    0.4  130.0     23.2     42.0  8.1  3.9      0.87        1
890  890   57    Male    1.9    0.8  270.8     40.8     50.0  6.0  2.8      0.94        0

[891 rows x 12 columns]

dockerコマンドとdocker-composeコマンド

dockerコマンド docker-composeコマンド
docker build [build context] docker-compose build
docker run [image] docker-compose up
docker ps docker-compose ps
docker exec [container] docker-compose exec [service]

便利コマンド

buildしてrun

docker-compose up --build

stopしてrm

docker-compose down

これだけだとコマンドからしかpythonが実行できないのですが、pycharmやvscodeから実行出来るように出来るともっと便利です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0