CloudRunでnode.jsを動かす
Node.jsフレームワークのFastifyで作ったAPIをCloudRun上で動かしたかったのでデプロイ設定を行った。
Dockerfile
を用意
# Dockerfile
FROM node:14-slim AS appbuild
WORKDIR /app
COPY package.json yarn.lock /app/
RUN yarn install
COPY . /app/
RUN yarn build
FROM node:14-slim
WORKDIR /app
COPY package.json yarn.lock /app/
COPY --from=appbuild /app/dist ./dist
COPY --from=appbuild /app/node_modules ./node_modules
CMD [ "yarn", "start" ]
cloudbuild.yaml
を用意
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/${REPO_NAME}:${SHORT_SHA}', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/${REPO_NAME}']
- name: 'gcr.io/cloud-builders/gcloud'
args:
[
'run',
'deploy',
'${REPO_NAME}',
'--image',
'gcr.io/$PROJECT_ID/${REPO_NAME}:${SHORT_SHA}',
'--region',
'asia-northeast1',
'--platform',
'managed',
'--allow-unauthenticated',
'--update-env-vars',
'NODE_ENV=production',
]
images:
- gcr.io/$PROJECT_ID/${REPO_NAME}
- CloudBuildのマネージメントコンソールでトリガー設定を追加
これでリポジトリにpushしたらCloudRun上に自動デプロイできるようになる。
最初は↓の記事を読んでDockerfileなしで動かすのを試してみたが、うまくいかなかったのでDockerfileを用意することにした。
Buildpacksのことがイマイチよく分かっていないので、もう少し理解を深めてから再挑戦したい。