こんばんわ!Keisukeです!
インフラ系をいじったことのない人がインフラを整えようとすると異常に時間がかかるんですね!
本当に時間がかかりました…
インフラ系は苦手分野のようです…
今回は, Dockerを用いてPython3の実行環境を構築したいと思います!
Dockerは以前にも話に上がりましたが, 仮想環境内にコンテナを立ち上げその内部で開発などを行います!
やりたいこと
・Docker上にPythonの開発環境を構築
・Pythonを実行
欲しい機能
・コンテナ内で使用するコードを保存しておく場所をPC上に設置する
前提条件
Docker for Windowsがインストールされている
・Windows10 Pro
Hyper-V利用可能
やり方
Dockerの起動に必要となる
・Dockerfileの作成
・docker-compose.ymlの作成
僕が一番苦労したのは, このDockerfileです…
Dockerfileはコンテナのイメージなどが記述されており, これを使えばいつでも同じ環境を作れますよ!っといったものなのですが…
???
作り方は?拡張子は?そもそも書き方がわからん!!!
という感じでした.
結論は, 自分で作らなくても良い!でした…(笑)
作れることこした事はないですが自分で作らなくてもインターネット上にたくさん転がってました!
Docker事態の使い方もインターネット上を見て何となくはつかめました
最も効率が良かったのは, YouTubeを見ながらやるのが一番でした!
画像と文章では伝わらない部分が動画にはあるのでかなりお勧めです。
手順
※ PC–自分のパソコンのこと コンテナ–Docker内のこと
①PC上で好きな場所にファイルを作成する。
②①で作ったファイルの中に以下のファイルを作成する
何かしらのエディターで書いて拡張子消せばOK
・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
・docker-compose.yml
version: ‘3’
services:
python3:
restart: always
build: .
container_name: ‘python3’
working_dir: ‘/root/’
command: ‘tail -f /dev/null’
volumes:
– ./opt:/root/code
③ 作成したファイル上でコンテナを起動!
docker-compose up -d –build
④ コンテナに接続!
docker exec -it python3 bash
PS C:\Users\user\Desktop\local\docker_python> docker exec -it python3 bash
root@cdfcc2e20d07:~#
⑤ ファイルを確認する!
コンテナ上のファイル確認!
root@cdfcc2e20d07:~# ls
code
PC上の作ったファイルを確認!
– Dockerfile
– docker-compose.yml
– code
codeの中にコードを入れればコンテナ上にも反映されます!
⑥ Pyhton の実行
PC上の中に以下のコードを入れてみます!
code
hello.py
hello.py
print(‘Hello world!, Hello Docker!’)
コンテナ上でcodeの中に入る
root@cdfcc2e20d07:~# cd code
Pyhtonの実行!
root@cdfcc2e20d07:~/ code#
python hello.py
実行結果!
Hello world!, Hello Docker!
⑦ コンテナから脱出!
root@cdfcc2e20d07:~/ code# exit
上記の流れを追えばDocker上でPythonを実行できます。
また, matplotなどを使用したい場合はコンテナ上で
root@cdfcc2e20d07:~/code# python -m pip matplotlib
でインストールできます!
やっとDockerの使い方をつかめた感じです!
今後は, Docker上でMySQLに接続してPythonの処理に使うデータをMySQLから引っ張ってきたりしたいですね!
[今日の達成]
・Docker上でPythonを実行した!
[今日の未消化]
・Docker上からMySQLに接続する!