概要
表題の勉強会を行った一日目の内容を記載します。全日の内容は以下のまとめページをご覧ください。
[【まとめ】最小限の構成でdocker-composeからKubernetesにデプロイする勉強会] (https://qiita.com/tamoco/items/5a5ffb448d59b3b03831/)
一日目のできたこと
- Node.js(Express)のアプリケーションの作成
- Dockerfileの作成
- docker-compose.ymlの作成
一日目の内容
カンタンにNode.jsでアプリケーションを作成しました。
それらをコンテナで動作するようにDockerfileを作成しました。
WORKDIRでカレント及びフォルダを作成し、そのフォルダに対してexpress
配下のファイルをコピーしています。
■ Dockerfile
# ベースイメージを指定
FROM node:14.5-alpine3.12
# 環境変数設定
ENV NODE_ENV="development"
# 作業ディレクトリ作成&設定
WORKDIR /src
COPY ./express /src
RUN npm install
CMD npm run start
そして最後にDockerfile
をdocker-comopse
でも動作させるようにしました。
GitLab
のContainer Registry
にプッシュするためにimage
を設定しlatest
というタグも設定しています。本当はプッシュするときにイメージ名やタグを設定した方がよいのですが、今回は決め打ちでimage
に設定しています。
■ docker-compose.yml
version: '3'
services:
app:
build:
context: ./app # Dockerfile保存場所
image: registry.gitlab.com/tamoco-mocomoco/k8s-test/express:latest
ports: # ポート接続
- 3000:3000
一日目を振り返って
Express
はサンプルがたくさんあるので手早くできました。Dockerfile
からdocker-compose
も慣れれば難しくなくbuild
とcontext
さえ注意すれば大丈夫でした。
悩んだところとしてはフォルダの構成で少しフォルダを整理したりしました。今回の場合はExpress以外にもアプリケーションが増えたことを考えてapp
配下にExpress
という構成にしています。
もし他のアプリケーションが増えた場合はapp
配下に別のフォルダを作成して別にDockerfile
を作成することで構成がわかりやすくなると思っています。複数のアプリケーションになった時点でDockerfile
自体のファイル名もアプリケーションごとに変えたり、docker-compose.yml
もcontext
のDockerfile
を指定する必要が出てくると思います。
この辺については拡張する機会があった場合に、また記事として投稿させていただければ幸いです。