【一日目】最小限の構成でdocker-composeからKubernetesにデプロイする勉強会


概要

表題の勉強会を行った一日目の内容を記載します。全日の内容は以下のまとめページをご覧ください。

【まとめ】最小限の構成でdocker-composeからKubernetesにデプロイする勉強会

一日目のできたこと

  • 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

そして最後にDockerfiledocker-comopseでも動作させるようにしました。
GitLabContainer 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も慣れれば難しくなくbuildcontextさえ注意すれば大丈夫でした。

悩んだところとしてはフォルダの構成で少しフォルダを整理したりしました。今回の場合はExpress以外にもアプリケーションが増えたことを考えてapp配下にExpressという構成にしています。

もし他のアプリケーションが増えた場合はapp配下に別のフォルダを作成して別にDockerfileを作成することで構成がわかりやすくなると思っています。複数のアプリケーションになった時点でDockerfile自体のファイル名もアプリケーションごとに変えたり、docker-compose.ymlcontextDockerfileを指定する必要が出てくると思います。

この辺については拡張する機会があった場合に、また記事として投稿させていただければ幸いです。