0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[03] docker-composeを活用して即座にPython 3.9.4 を立てる ... 使い捨てコンテナで実行する

Last updated at Posted at 2021-08-04
本シリーズのトップページ
https://qiita.com/robozushi10/items/eebd8068a0533ba49bea

はじめに

限られた物理PC の中で、次の Python バージョン
・Python 3.6.8
・Python 3.7.3
・Python 3.8.3
・Python 3.9.4
をインストールしてプログラムを作成することになった.

今回は参考として「使い捨て型のコンテナ」の作成方法についても記しておく1

 

参考にした情報

書籍
Docker/Kubernetes 実践コンテナ開発入門 (山田明憲 著)

 

手順

構築後のファイル構成

.
|-- PV ......................... 永続ボリューム
|   `-- py
|       `-- app ................ この直下に *.py を配置する
|           `-- a.py ........... サンプルコード
|-- assets
|   `-- py
|       |-- Dockerfile
|       `-- requirements.txt ... 導入したい Python パッケージを記述しておく
`-- docker-compose.yml

手順

1. 永続ボリュームを作成する

コードやデータを配置するために使用する.

$ mkdir -p PV/py/app

2. Dockerfile を作成する

独自拡張するために使用する.
なお、「常駐型コンテナを作る」との差異は末尾 2行の ENTRYPOINT と CMD のみである.

$ mkdir -p assets/py/
$ vim assets/py/Dockerfile

assets/py/Dockerfile

FROM python:3.9.4-buster
 
## プロキシサーバを使う場合
# ENV http_proxy="http://proxy.co.jp:8080"  
# ENV https_proxy="http://proxy.co.jp:8080"
 
# コンテナ内での作業場所を /usr/src/app とする
WORKDIR /usr/src/app
 
# Python に関する環境変数
# pyc を作成しない
ENV PYTHONDONTWRITEBYTECODE 1
# python -u 相当. バッファリングしない. 
ENV PYTHONUNBUFFERED 1
 
# 日本環境に合わせる
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ENV LANGUAGE ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
 
# pip を更新したうえで必要なパッケージをインストールする
RUN python -m pip install --upgrade pip==21.0.1
COPY requirements.txt .
RUN pip install -r requirements.txt

# コンテナ起動すると同時に python を実行するための定義をする
ENTRYPOINT ["python"]
CMD [""]

3. requirements.txt を作成する

ここでは assets/py/requirements.txt に定義する

assets/py/requirements.txt

以下は例である.

requests==2.23.0
sh==1.13.1
urllib3==1.25.9

4. docker-compose.yml を作成する

docker-compose.yml

version: '3.7'
 
services:
  py:
    build: ./assets/py
    image: mypy0394
    container_name: mypy0394
    volumes:
      - ./PV/py/app/:/usr/src/app/

5. イメージビルドをする

次のコマンドによって、Dockerイメージ「mypy0394」が作られる

$ docker-compose build --no-cache

6. サンプルコードが動作するか確認をする

./PV/pv/app/a.py

物理ホストで次の ./PV/pv/app/a.py を作成する.

コンテナ内からは /usr/src/app/a.py として見えている.

#!/usr/bin/env python
#import requests
import urllib3
import sh
import sys

print("Hello Python 0394")

for a in sys.argv[1:]:
  print(a)

7. コンテナを使い捨てで実行する

docker-compose のコマンドとして run --rm を使えば良い.

$ docker-compose run --rm py a.py 1 2 3
Hello Python 0394
1
2
3

 

  1. 普段は「使い捨て型のコンテナ」をほとんど使用しない

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?