カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

python開発用コンテナ環境を作る(自分メモ)

Dockerを使うタイミングがまちまち過ぎて毎回Dockerでの環境構築方法を調べている気がするのでメモしておきます。

目次

実施作業

Dockerfileをつくる

Pythonイメージを使えば手っ取り早いですが、今回はAmazonLinuxで作りたかったので、そっちのイメージでDockerfileを作ります。

From amazonlinux:latest
USER root
SHELL ["/bin/bash", "-c"]

RUN amazon-linux-extras install -y python3.8
RUN pip3.8 install pipenv
RUN echo 'alias python=python3.8' >> ~/.bashrc
RUN echo 'alias pip=pip3.8' >> ~/.bashrc
RUN source ~/.bashrc



docker-compose.ymlをつくる

調べた記事がdocker-compose使ってたので、同じようにdocker-compose.ymlファイルを作成します。

version: '3'
services:
  python3:
    build: .
    container_name: 'python3'
    working_dir: '/root/'
    tty: true
    volumes:
      - ./:/root

何気に使ったことないので、パラメータについて調べたことについて簡単に書いておきます。
restartパラメータを設定するとOS起動時にコンテナも自動起動ができるそう。

build:Dockerfileがあるパスを指定
container_name:その名の通りコンテナ名
working_dir:コンテナ内の作業ディレクト
tty:コンテナを起動しっぱなしにする
volumes:ホストのディレクトリとの同期設定

restart:alwaysに設定するとOS起動時に自動起動

ビルド&コンテナ起動

docker-compose.ymlファイルがあるディレクトリで以下のコマンドを実行すると、イメージのビルドとコンテナの作成・起動が行われる模様。
-dはバックグラウンド実行です。

$ docker compose up -d --build

コンテナの停止コマンドは以下です。

$ docker compose down



コンテナへの接続

正常に起動されていれば以下のコマンドでコンテナ内部にログインが可能です。
引数のコンテナ名は先ほどdocker-compose.ymlで指定した名前と同じものを指定します。

$ docker compose exec [コンテナ名] bash

以下のコマンドでイメージとコンテナの確認ができます。

$ docker image ls
$ docker container ls

念のため、ログイン後python周りのパッケージがインストールできているか確認してみたところ、特に問題はなさそうでした。

bash-4.2# python -V
Python 3.8.5
bash-4.2# pip --version
pip 21.2.4 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
bash-4.2# pipenv --version
pipenv, version 2021.5.29



感想及び所感

これで毎回Google検索しなくてよくなるので、枕を高くして眠れそうです。