Hello, World!!

むずかしいことはかけません

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