📚
DockerでServerlessを実行できる環境の作成
ローカル環境にServerlessをインストールし開発を行っていましたが、Apple SiliconのPCでは使用したいプラグイン(serverless-dynamodb-local
)が対応していなかったため、Dockerを用いてServerlessの環境を作成しました。
前提として、AWSのアカウントが作成済みで、AWSへデプロイすることを想定しています。
Dockerfile
FROM node:16.14.2-alpine3.14
RUN apk update && apk add less vim curl unzip sudo
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN sudo ./aws/install
WORKDIR /workdir
Dockerfile内、以下の箇所でAWS CLIをインストールしています。AWSのサイトを参考にしています。
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN sudo ./aws/install
イメージ作成
docker build --platform linux/amd64 -t aws .
プラットフォームがarm
ではないイメージを作成するため、--platform linux/amd64
を指定しています。
コンテナ起動
docker run -it -v ~/.aws:/root/.aws -v "$PWD":/workdir --publish 3000:3000 --name aws --platform linux/amd64 aws bash
自分がコンテナを起動するときには、すでにローカル環境にAWS CLIの設定を行っていたため、-v ~/.aws:/root/.aws
を記載し設定を同期しています。
こちらは以下のページを参考にしています。
Serverlessのインストール
コンテナ内で以下を実行します。
npm install -g serverless
Serverlessのインストールが完了したら、以下コマンドでプロジェクトを立ち上げることができます。
# sls でも可
serverless
AWS CLI設定
AWS CLIのセットアップをする場合には以下コマンドを実行します。
aws configure
設定の方法は以下のページに記載されています。
Discussion