
じろう
学習履歴詳細
[Docker]メンターさんに教えてもらいながら自力でdocker-compose.ymlを書く練習。 [その他]TechCommitアドベントカレンダー用の記事を書く
今日のYWT
やったこと
執筆
Techpitのアドベントカレンダー用に、今年の学習振り返り記事を書いた
- YWT Questのアプリ自体や設計を見返した
docker-compose.yml
を自力で書いていく
メンターさんとzoomつなぎながら、dockerについて教えてもらいつつ、docker-compose.yml
を書いてlaradock
からの脱却を図る
- docker-compose.ymlを書く
- DockerHubで欲しいバージョンのDockerfileを探す
- Dockerfileをカスタマイズする
- そのDockerfileを読み込む設定を
docker-compose.yml
に書く docker-compose build
するdocker-compose up -d
する- 勝利
わかったこと
Docker雑記
build=イメージファイルを作る
イメージファイル=コンテナの元になる、核になるものzipみたいな
dockerファイルに書いてあるものを固めて一つのアイテムにしてしまう
up=イメージを使ってコンテナを立ち上げる
dockerfile = イメージのレシピ
docker-compose.yml = イメージからコンテナの立ち上げのレシピ
docker-compose up -d
イメージがないときは、 docker-compose build
が走ってから docker-compose up
が走る。
docker-compose.yml
っているの?
コンテナを分けるのがそもそも美味しい
分けたコンテナたちを一つのサーバーとして扱いたい
コンテナ=middlewareをコンテナ化して、付け替え可能=パズルみたいにしてる、ピースを組み合わせて一台のサーバーみたいにしたい
各コンテナ=ネットワーク的にはバラバラ、それぞれ別のIPが振られる
それぞれを一つのネットワーク領域に置きたい
→それをdockerfileでも書けるけど、超絶面倒くさい
これを束ねるために登場したのがdocker-compose
1.18.0-perl ←perlが元になっている
1.18.0-alpine ←alpineが元になってます
alpine = alpine linuxの略
- vimさえ入ってない最小構成
- dokcer imageを軽くしたい
- なんでかっていうと、imageをロードしてコンテナを作る。そこの転送量に関わってくる
- もっというと、今回はEC2でやってるけど、ECSっていうコンテナをそのままロードできるようなサービスを使ってできる
cloud版 docker-composeがECS(Elastic Container Service)
コンテナ=使い捨て
- バグったら殺す
- またイメージロードすればちゃんと立ち上がるはず
- 結局、イメージの大きさをどれだけ小さくするかで戦う
- だからなるべく小さく、余計なものを入れないように
- その中でもalpineは本当になんにも入ってませんっていう状態のやつ
alpineとbusterで数百倍サイズが違う
docker-compose up -dしたけど、ローカルからは見れない状態
ports: - 8080:80
8080=被らなければなんでもよし
EXPOSE 80
80を公開してる
WORKDIR /work
最初のログインした場所がどこかを指定
SHELL ["/bin/ash", "-oeux", "pipefail", "-c"]
デフォルトでつくshellのbashを指定している
Linuxコマンドのオプション、デフォルトでつけるやつ
dockerは行毎に差分管理
流し直して変わって無ければキャッシュしてくれている
Step 1/5 : FROM nginx:1.18-alpine ---> ea1819c829a5 Step 2/5 : SHELL ["/bin/ash", "-oeux", "pipefail", "-c"] ---> Using cache ---> c5fb37b9d3e0 Step 3/5 : RUN apk update ---> Using cache ---> 0f1434228265 Step 4/5 : COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf ---> 2efefefae6c7 Step 5/5 : WORKDIR /work ---> Running in bc87086efbea Removing intermediate container bc87086efbea ---> efc7ecf5929c
キャッシュしたいなら左側のコマンドはなるべく少なくして、 &&で書く
phpのdockerfile
- タイムゾーンの設定が重要になる
alpine
だとそのへんの設定が大変
次やること
- dockerでdb入れる
- 執筆の続き
2020年12月14日(月)
4.3時間