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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
y_sone
October 31, 2021
Programming
750
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dockerで最小限のPython実行環境を作る/Creating minimum Python container
Dockerで最小限のPython実行環境を作成しHello, World!するまでの体験談です。
2021年10月31日「とにかくほめる!マウントなしのLT会」にて初登壇。
y_sone
October 31, 2021
More Decks by y_sone
See All by y_sone
エンジニアの健康管理術 / Engineer Health Management Techniques
y_sone
13
10k
初心者でも使いやすい!PHPUnitアノテーション活用術/Easy to Use Even for Beginners! PHPUnit Annotation Utilization Techniques
y_sone
0
1.1k
Laravelコアファイルのコードリーディング/Reading the core code of Laravel
y_sone
0
530
Laravelのコアファイルを読んでみて/Impression of reading the core code of the Laravel framework
y_sone
0
240
2021年を振り返って/Reflection in 2021
y_sone
0
200
Exercismのすすめ / Recommend Exercism
y_sone
1
320
Other Decks in Programming
See All in Programming
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
170
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
200
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
200
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.5k
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
530
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
570
テーブルをDELETEした
yuzneri
0
130
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
200
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
170
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
150
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
160
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
330
Faster Mobile Websites
deanohume
310
32k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
560
Six Lessons from altMBA
skipperchong
29
4.4k
Designing Powerful Visuals for Engaging Learning
tmiket
1
470
RailsConf 2023
tenderlove
30
1.5k
For a Future-Friendly Web
brad_frost
183
10k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
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