Ruby & Python 初心者のための Docker Compose 入門

1.2K Views

December 29, 22

スライド概要

2022-12-28
すごい広島 .rb with Python
https://pycon-hiroshima.connpass.com/event/268416/

profile-image

Shuaruta Inc. NVDA日本語版 すごい広島 .rb with Python

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Ruby & Python 初心者のための Docker Compose 入門 2022-12-28 西本 卓也 @nishimotz / @24motz Shuaruta Inc. 1

2.

まず Docker Compose • 最近の Udemy 教材 • プログラミング初心者はついてこれるのか? • もっとやさしく説明できないか? 2

3.

Docker Compose • Docker = インフラとアプリを分離するプラットフォーム • 仮想化 • macOS / Windows で Linux 用のソフトウェアを使える • コンテナ • 環境を捨てたり作り直したりしやすい • 環境を保存、共有、再利用、再構築 • Docker Compose = 複数のコンテナを定義し実行するツール • Web の開発環境として普及 • モダンな開発や運用の出発点 • AWS 対応 : Docker Compose for Amazon ECS • Docker で最初に教えるべき機能 3

4.

セキュリティの実習環境 4

5.

開発環境も運用環境も自由になる • https://medium.com/skeb-jp/report-36b5608aa867 5

6.

前提 • Docker Desktop 最新版(v4.15 で確認) • 大企業の商用利用は有償 • 代替手段は初心者に勧めにくい • 大企業で仕事マシンに野良インストール? • なるべくキーボードで操作しない(ハンズオン勉強会向き) • 確認した環境 • • • • Windows 11 Pro + Hyper-V Windows 11 Home + WSL2 macOS 13.1 Apple Silicon macOS 12.6.2 Intel 6

7.

必要なもの • よいマシン • ストレージの容量と性能 • 管理者権限 • Windows Home の場合は WSL2 有効化 • 安定したネット環境 • メモ帳でできることをやる • Git 不要 • Visual Studio Code 不要 7

8.

Docker Desktop のインストール • docs.docker.jp • www.docker.com/products/docker-desktop/ 8

9.

ターミナル (PowerShell/zsh) から > cd > mkdir hello-docker-compose > cd hello-docker-compose > notepad docker-compose.yml # /Users/(ユーザ名)/(プロジェクト名) を作っている # プロジェクト名が hello-docker-compose になる # WSL2バックエンドの場合も PowerShell でよい # ユーザ名に空白やマルチバイト文字はダメかも(未確認) 9

10.

docker-compose.yml (1) services: python: image: python tty: true # 行頭の半角空白の数を 0, 2, 4 と増やしている 10

12.

docker compose up ちなみに docker-compose (ハイフンあり) = 古いバージョン 12

13.

python-1 で Open in terminal 13

14.

python3 14

15.

Container terminal : integrated 15

16.

Actions の STOP ボタンで止める 16

17.

ターミナルで Ctrl-C でも止まる 17

18.

docker-compose.yml (2) services: python: image: python tty: true ruby: image: rubylang/ruby tty: true 18

19.

python-1 と ruby-1 が Running 19

20.

irb 20

21.

ファイルを使いたい • プログラムをファイルとして保存して実行する • ファイルを読み込むプログラムを作る • ホストとゲストがファイルを共有する • Docker Desktop マシン(ホスト) • Linux 仮想マシン(ゲスト) • テキストの編集はホスト環境で行いたい • エクスプローラー + メモ帳 • Finder + テキストエディット 21

22.

docker-compose.yml (3) services: python: image: python tty: true volumes: volumes: - .:/app - .:/app ruby: image: rubylang/ruby tty: true volumes: - .:/app 22

23.

同じフォルダにファイルを作成 hello.txt hello python and ruby hello.py print(open("hello.txt").read()) hello.rb puts File.read("hello.txt") 23

24.

ゲストで /app に移動してコードを実行 # cd /app # python3 hello.py # cd /app # ruby hello.rb 24

25.

ネットワークを使いたい • ゲストでWebサーバーを作って動かす • ホストでWebブラウザを動かす • ホストとゲストが通信できるようにする • Python • localhost:8000/hello.txt • Ruby • localhost:8001/hello.txt 25

26.

docker-compose.yml (4) services: python: image: python volumes: - .:/app working_dir: /app command: python3 -m http.server ports: - 8000:8000 26

27.

docker-compose.yml (5) services: ruby: image: rubylang/ruby volumes: - .:/app working_dir: /app command: ruby server.rb ports: - 8001:8001 27

28.

server.rb require "socket" if File.file? path server = TCPServer.new 8001 client.puts "HTTP/1.0 200 OK" loop do client.puts "Content-Type: text/plain" client = server.accept client.puts path = "." + client.gets.split(" ")[1] client.puts File.read path while header = client.gets else break if header.chomp.empty? client.puts "HTTP/1.0 404 Not Found" end end client.close end RubyでシンプルなHTTPサーバを作る https://qiita.com/akiray03/items/3607c60ec8b221b3c2ba 28

29.

プロジェクトのコンテナを削除 • Images もゴミ箱ボタンで削除 • 自分で mkdir したフォルダの中身だけ残る 29

30.

Quit Docker Desktop • タスクトレイ(メニューバー) 30

31.

まとめ • Docker Desktop と docker-compose.yml を活用 • https://github.com/docker/awesome-compose • Visual Studio Code を使うと • 複数のファイルを同時に開く • docker compose の操作 • devcontainer が話題 • いろいろな仮想化 • Dockerコンテナ • ハードウェアの仮想化 • Ruby/Python の環境 31

32.

https://www.ruby-lang.org/ja/ 32

33.

https://www.python.jp/ 33