ってなったら情けないなと思ったので、Dockerについて改めて調べてみました。
Dockerとは何か?
「アプリを動かすための環境ごとまとめて持ち運べる箱」
です。
日高屋を例に挙げさせてください
自分は日高屋の肉野菜炒め定食が好きですが
どこの日高屋に行っても同じ味で最高に美味しい肉野菜炒め定食が出てくるのは
どこの店舗でも同じ定食を作れるように共通の道具・材料・レシピがあるからです
Dockerも同じで、どのPCでも同じ環境で開発、動作できるようにするためには
同じライブラリやバージョンのものが必要です。
それらを全部セットにして箱詰めして、
どこでも同じよう動作、開発できるようにするしているイメージです。
つまりDockerは日高屋の店舗です
Dockerを使う目的
Dockerの目的は下記3点です
- 環境の違いをなくして、どこでも同じようにアプリを動かす
- 簡単に開発・テスト・本番で同じ動作をさせる
- 配布や引っ越しを楽にする
Dockerを使うメリット
メリット | 説明 |
---|---|
環境がそろう | どこで動かしても同じ動作ができる |
配布が楽 | 1つの箱を渡すだけでOK |
セットアップが簡単 | 難しいインストール作業が不要 |
バージョン違い問題が消える | Node.jsやPythonのバージョン差で困らない |
テストや本番で再現性が高い | 開発環境と本番環境の違いがなくなる |
Dockerを使わないと発生する作業
もしDockerを使わなかったら
-
サーバーごとに違う環境設定が必要
- Node.jsのバージョンが違くて動かない
- OSが違くて動かない
- 必要なソフトが入ってなくて動かない
- インストール手順書を毎回作る必要がある
- 動かす場所ごとに動作確認が必要
- 他の人に渡すときに失敗することが多い
つまり、Dockerなしだと
「うちのパソコンでは動くのに…」問題が大量発生します。最悪です。
dockerがないというのは日高屋でいうと
あっちの店舗は豚肉じゃなくて鶏肉使っていて
味は九州の醤油を使っているからちょっと甘いんだよね
みたいなことが起きてしまいます。
ちょっと美味しそうですね。
味はちょっと差があるくらいじゃ大して問題にはならないですが
コードで動いてるものは少しの違いで動かなくなったりしますので
Dockerという存在は非常にありがたいのです
実際にどうやって使うのか?
① Dockerfileを作る
これは「アプリの作り方レシピ」です。
FROM node:20.8.0
WORKDIR /usr/src/app
COPY . ./
RUN npm install
RUN npm run build
EXPOSE 8080
CMD ["npm", "run", "start"]
② Dockerイメージを作る
レシピからイメージ(材料セット)を作ります。
docker build -t gcr.io/プロジェクトID/my-app .
③ イメージをGCPにpushする
作ったイメージをGoogle Container Registry(GCR)やArtifact Registryにアップロードします。
docker push gcr.io/プロジェクトID/my-app
これで、8080番ポートでアプリが動き始めます
まとめ
Dockerを使えば、
- 環境の差を気にせず
- どこでも同じように動かせて
- 配布や引っ越しもラク