Docker, 開発

DockerでPython実行環境を作ってみる

・DockerでPython実行環境を作ってみる
・DockerとVScodeでPython環境構築
※Ubuntu20.04で検証済み
このコマンドによりイメージ作成→コンテナ作成→コンテナ起動
$ docker compose up -d –build

作られたイメージとコンテナの確認
$ docker image ls

コンテナのリストを取得
$ docker container ls

コンテナへの接続
$ docker compose exec python3 bash

Pythonのバージョンを確認
# python –version

Python用のライブラリをインストールする
# python -m pip install numpy

自分のコンピュータ上のPythonファイルを走らせてみる
# ls
# cd opt
# python sample.py 180.0

コンテナの削除
# exit
$ docker compose down
$ docker container ls
=> なにも表示されないこと

再度コンテナを起動したい場合
$ cd docker-python/
$ docker compose up -d –build

あるいは

$ docker compose up -d

コンテナへの接続
$ docker compose exec python3 bash

——————————————————
# useradd elm -m -s /usr/bin/bash
# su – elm
$ python3 -m pip install matplotlib
$ python3 -m pip install japanize_matplotlib
$ python3 -m pip install graphviz
—————————————-
$ python3 -m pip install pandas
$ python3 -m pip install jupyter
$ python3 -m pip install jupyterlab
$ jupyter lab
http://localhost:8888/lab?token=45d28b91ce35883deb3c8699a1f08be419579d8cc15ce28b

##############################################################################
cd
mkdir python3
cd python3
vi Dockerfile

FROM python:3
USER root

RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get install -y vim less
RUN pip install –upgrade pip
RUN pip install –upgrade setuptools

RUN python -m pip install jupyterlab

—————————————–
vi docker-compose.yml
version: ‘3’
services:
python3:
restart: always
build: .
container_name: ‘python3’
working_dir: ‘/root/’
tty: true
volumes:
– ./opt:/root/opt

vi sample.py
import math
import sys

def main():
val = float(sys.argv[1])
print(math.radians(val))

if __name__ == “__main__”:
main()

—————————————–
docker compose up -d –build

コンテナへの接続
$ docker compose exec python3 bash

——————————–
vi json.py
——————————————————————
import requests
# curl https://www.googleapis.com/books/v1/volumes?q=title:地獄の法

key = ‘地獄の法’
url = ‘https://www.googleapis.com/books/v1/volumes?q=’
payload={‘title’:key}
r = requests.get(url, params=payload)
print(r,json())

#func(2,3,4)

——————————————————————
import requests
# curl https://www.googleapis.com/books/v1/volumes?q=title:地獄の法

key = ‘地獄の法’
url = ‘https://www.googleapis.com/books/v1/volumes?q=title:地獄の法’
r = requests.get(url, params=)
print(r,json())

#func(2,3,4)

——————————————————————
import subprocess,json

section=’title’
key = ‘地獄の法’
response = subprocess.check_output([“curl”, “-s”, “https://www.googleapis.com/books/v1/volumes?q=${section}:${key}”])
print(“API response:”, response.decode(“utf-8”))

——————————————————————
import json, requests, japanize_matplotlib
import matplotlib.pyplot as plt

url = ‘https://www.googleapis.com/books/v1/volumes?q=title:地獄の法’
r = requests.get(url)

print(r.text)
data = json.loads(r.text)