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
650
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
エンジニアの健康管理術 / Engineer Health Management Techniques
y_sone
12
9.6k
初心者でも使いやすい!PHPUnitアノテーション活用術/Easy to Use Even for Beginners! PHPUnit Annotation Utilization Techniques
y_sone
0
950
Laravelコアファイルのコードリーディング/Reading the core code of Laravel
y_sone
0
450
Laravelのコアファイルを読んでみて/Impression of reading the core code of the Laravel framework
y_sone
0
180
2021年を振り返って/Reflection in 2021
y_sone
0
160
Exercismのすすめ / Recommend Exercism
y_sone
1
250
Other Decks in Programming
See All in Programming
速いWebフレームワークを作る
yusukebe
5
1.7k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
220
CloudflareのChat Agent Starter Kitで簡単!AIチャットボット構築
syumai
2
420
Testing Trophyは叫ばない
toms74209200
0
690
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.2k
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
220
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
print("Hello, World")
eddie
1
490
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
17
9.1k
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
1.9k
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
820
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
4
1.9k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
It's Worth the Effort
3n
187
28k
A designer walks into a library…
pauljervisheath
207
24k
Designing for Performance
lara
610
69k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Automating Front-end Workflow
addyosmani
1370
200k
The Language of Interfaces
destraynor
161
25k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
186
54k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
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