Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dockerで最小限のPython実行環境を作る/Creating minimum Pyth...
Search
y_sone
October 31, 2021
Programming
770
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
11k
初心者でも使いやすい!PHPUnitアノテーション活用術/Easy to Use Even for Beginners! PHPUnit Annotation Utilization Techniques
y_sone
0
1.2k
Laravelコアファイルのコードリーディング/Reading the core code of Laravel
y_sone
0
560
Laravelのコアファイルを読んでみて/Impression of reading the core code of the Laravel framework
y_sone
0
250
2021年を振り返って/Reflection in 2021
y_sone
0
210
Exercismのすすめ / Recommend Exercism
y_sone
1
330
Other Decks in Programming
See All in Programming
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
310
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
340
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
360
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
320
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
7.8k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
210
R8 の設定見直しでアプリサイズ削減
andpad
0
190
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
240
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
390
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
310
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
460
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
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