Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dockerで最小限のPython実行環境を作る/Creating minimum Pyth...
Search
y_sone
October 31, 2021
Programming
0
510
Dockerで最小限のPython実行環境を作る/Creating minimum Python container
Dockerで最小限のPython実行環境を作成しHello, World!するまでの体験談です。
2021年10月31日「とにかくほめる!マウントなしのLT会」にて初登壇。
y_sone
October 31, 2021
Tweet
Share
More Decks by y_sone
See All by y_sone
初心者でも使いやすい!PHPUnitアノテーション活用術/Easy to Use Even for Beginners! PHPUnit Annotation Utilization Techniques
y_sone
0
780
Laravelコアファイルのコードリーディング/Reading the core code of Laravel
y_sone
0
330
Laravelのコアファイルを読んでみて/Impression of reading the core code of the Laravel framework
y_sone
0
150
2021年を振り返って/Reflection in 2021
y_sone
0
130
Exercismのすすめ / Recommend Exercism
y_sone
1
180
Other Decks in Programming
See All in Programming
ヤプリ新卒SREの オンボーディング
masaki12
0
130
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
RubyLSPのマルチバイト文字対応
notfounds
0
120
Click-free releases & the making of a CLI app
oheyadam
2
120
Realtime API 入門
riofujimon
0
150
役立つログに取り組もう
irof
28
9.6k
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
300
GitHub Actionsのキャッシュと手を挙げることの大切さとそれに必要なこと
satoshi256kbyte
5
430
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
初めてDefinitelyTypedにPRを出した話
syumai
0
420
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
GitHub's CSS Performance
jonrohan
1030
460k
Agile that works and the tools we love
rasmusluckow
327
21k
Writing Fast Ruby
sferik
627
61k
Building Your Own Lightsaber
phodgson
103
6.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Product Roadmaps are Hard
iamctodd
PRO
49
11k
The Cult of Friendly URLs
andyhume
78
6k
Music & Morning Musume
bryan
46
6.2k
GraphQLとの向き合い方2022年版
quramy
43
13k
Speed Design
sergeychernyshev
25
620
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
Dockerで最小限のPython実行環境を作る Hello, World!ができればヨシ! Presented by y_sone @20211031_とにかくほめる!マウントなしの LT会🎃
自己紹介 • 2018年8月にWebエンジニアへ転職 • 主な使用言語はPHP • たまにイベントに出没します(スタッフ経験あり)
今日話すこと • なぜPythonなのか • なぜDockerなのか • 最小限のPython実行環境を作りHello, World!を実行するまで
なぜPythonなのか • 今後仕事で使うから
なぜDockerなのか • 今後仕事で使うから • PCの環境を汚したくないから • 複数の環境で使いたいから
最小限のPython実行環境を作り Hello, World!を実行するまで 1. マイルール 2. ディレクトリ構成 3. Dockerfileの構成 4.
docker-compose.yamlの構成 5. コンテナを起動しPythonでHello, World!を実行する
マイルール • Docker Composeを利用したい • 適当なソースをコピペして理由はわからないけど動きましたーは嫌だ • よくわからないものを雰囲気で作るのは嫌なので、機能は最小限に • 最終的にHello,
World!ができればヨシ!
ディレクトリ構成 python_study ├── Dockerfile ├── docker-compose.yaml └── hello_world.py • コマンドはpython_studyディレクトリで実行する
• hello_world.pyはprint("Hello, World!")のみ記述
Dockerfileの構成 FROM python:3 WORKDIR /usr/src/app COPY . .
Dockerfileの構成 # Docker Hubからイメージを取得 FROM python:3 # コマンド実行場所の作業ディレクトリを指定 WORKDIR /usr/src/app
# ホストのファイルを作業ディレクトリへコピー COPY . .
docker-compose.yamlの構成 version: '3' services: web: build: . stdin_open: true
docker-compose.yamlの構成 # Composeファイルのバージョン version: '3' # コンテナの設定を定義 services: # コンテナの名前
web: # Dockerfileの存在するディレクトリのパス build: . # プロセスを継続させてコンテナの正常終了を防ぐ, tty: trueでもOK stdin_open: true
コンテナの構築 $ docker-compose up -d … Creating python_study_web_1 ... done
コンテナの起動確認 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES 9282080df68d python_study_web "python3" 48 seconds ago Up 47 seconds python_study_web_1
upコマンドが実行していること • 目的 docker-compose.yamlに定義されているサービスを起動する • 起動までの流れ Dockerイメージが存在しない →Dockerfileを元にイメージpython_study_webを構築(=ビルド) →イメージからコンテナpython_study_web_1を構築 →コンテナを起動
コンテナに入る $ docker-compose exec web bash root@9282080df68d:/usr/src/app# ls Dockerfile docker-compose.yaml
hello_world.py • docker-compose.yamlに記述したservice(web)に入りbashを実行する • docker container exec -it python_study_web_1 bashでもOK
PythonでHello, World! # python hello_world.py Hello, World!
おわりに • LTは久しぶりなので緊張しました • 他人への説明を前提にすると要求される理解度のレベルが跳ね上がる • しかし、他人へ説明できない=理解していないと同じではないか? • 何となくでスルーしていた部分に向き合う良い機会になった
参考 • Dockerfileの書き方 https://docs.docker.jp/engine/reference/builder.html • docker-compose.yamlの書き方 https://github.com/compose-spec/compose-spec/blob/master/spec.md https://ai-can-fly.hateblo.jp/entry/summary-of-docker-compose-for-beginners • docker-composeコマンド
https://docs.docker.jp/compose/reference/toc.html • stdin_open/tty/itオプション https://ohbarye.hatenablog.jp/entry/2019/05/05/learn-tty-with-docker https://zenn.dev/hohner/articles/43a0da20181d34