0
1

More than 1 year has passed since last update.

Docker Compose+Pythonで環境構築してみる

Posted at

はじめに

今回はDocker Composeを使ってPythonの環境を作っていきたいと思います。
Dockerのインストールは完了していることを前提に進めていきます。

環境

DockerとDocker Composeのバージョンは以下の通りです。

Docker version 20.10.22, build 3a2c30b63a
Docker Compose version 2.20.3

Dockerの設定

Dockerを使うことによってローカルやリモートマシン上での環境構築を簡単に自動化することができます。

ファイル構成

まず、以下のようなファイル構成を作っていきます。

docker_python
├── Dockerfile
├── app
│   └── sample.py
└── docker-compose.yml

Dockerfile

Dockerは、Dockerfileを読み込むことで自動的にDocker Imageを作成します。
Dockerfileは、ユーザーがDocker Imageを作成するために必要なコマンドを記載したテキストファイルです。

Dockerfileは次のように記述していきます。

FROM python:3.9

WORKDIR /app

COPY . .
  • FROM python:3.9
    • ベースとなるイメージを指定しており、DockerfileはFROMの命令から始めなければならないというルールがあります。
  • WORKDIR /app
    • 作業ディレクトリの指定しています。作業ディレクトリを指定することで、その後のRUN, CMD, ENTRYPOINT, COPY, ADDなどの命令がそのディレクトリで実行されます。
  • COPY . .
    • ファイルやディレクトリをコンテナのイメージにコピーしています。
    • 最初の . はビルドコンテキスト(通常はDockerfileがあるディレクトリ)の中の全てのファイルとディレクトリを指します。
    • 2番目の . はコンテナ内の作業ディレクトリを指します。この作業ディレクトリは、WORKDIR命令で指定されたディレクトリです。もしWORKDIRが設定されていなければ、ルートディレクトリを指します。

docker-compose.yml

docker-compose.ymlは複数のDockerコンテナを一緒に定義・実行するための設定ファイルです。
YAML形式で記述され、各サービスを個別に定義します。

version: "3"
services:
  docker_python:
    container_name: python
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: "/app/"
    tty: true
    volumes:
      - .:/app
  • version:
    • 使用するdocker-composeファイルフォーマットのバージョンを指定します。
  • build:
    • Dockerfileのあるディレクトリやビルドの指定します。
    • context: .
      • ビルドコンテキストを指定します。. はカレントディレクトリを意味します。
    • dockerfile: Dockerfile
      • イメージのビルドに使用するDockerfileの名前を指定します。この場合、カレントディレクトリにあるDockerfileという名前のファイルを指します。
  • working_dir: "/app/"
    • コンテナ内の作業ディレクトリを/app/に設定する。
  • tty: true
    • 擬似TTYを割り当てるもので、ターミナルでコンテナとやり取りしたい場合に便利です。
  • .:/app
    • ホストのカレントディレクトリをコンテナ内の /app にマッピングします。これによって開発時にホストのappディレクトリで行った変更が即座にコンテナ内に反映されます。

sample.py

動作を確認するため、sample.pyには以下の一行を記載しておきます。

print("Hello World!")

Dockerのコンテナのビルドと起動

以下のコマンドでコンテナの作成と起動を行います。

cd docker_python
docker compose up -d --build

コンテナへの接続とHello World!の出力

まず、コンテナに接続します。

docker exec -it python bash

コンテナに接続した状態で以下を実行すると

root@57ce8b6f9197:/app# python3 app/sample.py

Hello Worldが出力されます。
これで、DockerとPythonで環境構築することができました。

Hello World!

おわりに

今回はdocker-composeとPythonで環境構築を行ってみました。
Dockerは非常に便利などで今後も積極的に使っていきたいと思います。

以上です。お疲れ様でした。

0
1
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
0
1