Docker どっか〜ん💥
以下のイベントに参加したので復習していきたいと思います
tech-chura-lady.connpass.com
講師の方をお招きしてハンズオン形式でDockerを学んでいきました
以下資料
GitHub - kkznch/20200215_docker-hands-on_starter
Dockerとはをざっくり(こんな感じかなー、多分違うかもしれない)
軽量な仮想環境を簡単に作ることができて、複数人で開発した時に同じ環境を揃えやすい
設定した環境をまとめてあるのがコンテナ
Docker の操作的なハンズオン
1. まずは最小限の Dockerfile を書こう
FROM alpine RUN echo "Docker のビルド中..." CMD echo "Docker 起動したよ!やったね!"
「シンプルなOS(alpine)のコンテナを持ってきて、ecchで文字を出力してくださいね」をお願いしてる
例えていうならたい焼きの型を作るけど、どれくらいの大きさなのか、持ち手は赤くするとかを決めている(たい焼き型の設計書)
🤔Dockerfileとは
アプリケーションの環境を定義するもの
(docker imageを作るもの )
🤔docker imageとは
コンテナの土台
2. 以下のコマンドで Dockerfile からイメージを作成しよう
$ docker image build -t my-image .
例えていうなら、たい焼きの型を作れた
3. 以下のコマンドで作成したイメージを確認しよう
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my-image latest a29c485f30aa 6 minutes ago 5.59MB
4. 以下のコマンドで作成したイメージからコンテナを起動しよう
$ docker container run my-image Docker 起動したよ!やったね!
docker run を実行する時にどのイメージを使うのか指定します
上記のコマンドでは設計したmy-imageを元にコンテナを作った
例えていうなら、ここでやっとたい焼きが作れた
開発環境を同じにしたいときはdockerflileを作れば
docker container run my-image
とかで同じ環境を作れる
docker container run —rm
起動時にいらないコンテナを削除することができる
Dockerfile を書いていくハンズオンの章のところはDocker の操作的なハンズオンの章と何が違うかというと、Dockerfileを書き換えてパッケージを追加しているいるかいないかの違いなので割愛
ちなみにコンテナにgitを加えるときは(/# でコンテナの中に入ってる)
/# apk add git /# git —version
上記で空っぽのコンテナに色々入れることができる
けどここで追加するよりかはdockfileに追加した方が良い
docker-compose なハンズオン
Docker コマンドだけで nginx と php-fpm のコンテナを連携させると凄く面倒くさい。 そこで docker-compose を使って楽にコンテナを連携させよう。
docker-compose.yml ファイルで定義することで、アプリケーションを構成する各サービス(今回ならnginx や php-fpm)を一斉に実行できるようになる
1. docker-compose.yml を書いてみよう
version: '3.7' services: php-fpm: build: context: . dockerfile: ./Dockerfile volumes: - ./local-app:/app:cached working_dir: /app nginx: image: nginx:latest ports: - 80:80 depends_on: - php-fpm volumes: - ./conf.d/nginx/default.conf:/etc/nginx/conf.d/default.conf
2. 以下のコマンドで docker-compose.yml に書かれた通りにビルドしよう
$ docker-compose build
3. 以下のコマンドでイメージが作られたことを確認しよう
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE starter_php-fpm latest fed4dbf5d3f2 28 hours ago 83.5MB nginx latest 5ad3bd0e67a9 3 weeks ago 127MB
php-fpm と nginx 両方とも作成できた
4. 以下のコマンドでコンテナ郡を起動してみよう
$ docker-compose up -d
多分起動できていることでしょう、以下のコマンドで確認しよう
$ docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- starter_nginx_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp starter_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
作ったアプリにアクセスしよう
コンテナを起動させた状態で以下のコマンドで初期処理を実行しよう
$ make init
ブラウザから以下の URL にアクセスするとlaravelの画面が立ち上がっているはず!
http://localhost