手順
ECRリポジトリの作成を行う
Dockerfileの作成
- 今回作成したDockerfileはapache2をインストールして、使用するDockerfileです。
FROM ubuntu:20.04
# Dockerイメージのビルド中にデバイスやユーザーの入力を要求するプロンプトが出ないように設定する
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y && \
apt-get install -y apache2
COPY src/index.html /var/www/html/
# mkdirで作成するディレクトリはDockerだと削除される可能性があるので、毎回起動時に作成する
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
buildspec.ymlの作成
# 使用されているビルド使用スタンダートのバージョン0.2が最新
version: 0.2
env:
variables:
AWS_DEFAULT_REGION: "ap-northeast-1"
DOCKER_USER: AWS
REPOSITORY_URI: "<ECRのURIをコピーする>"
IMAGE_NAME: <作成した>
# phasesにはあとinstallがある
phases:
pre_build:
commands:
- echo "ECRへログイン"
#codeBuildからECRへのログインは不要だた、CodeBuild以外でも使えるようにするため記載
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username $DOCKER_USER --password-stdin $REPOSITORY_URI
build:
commands:
- echo "ビルド開始"
- docker build -t "$REPOSITORY_URI/$IMAGE_NAME:latest" .
post_build:
commands:
- echo "ECRへpush"
- docker push "$REPOSITORY_URI/$IMAGE_NAME:latest"
- printf '{"Version":"1.0","ImageURI":"%s"}' $REPOSITORY_URI/$IMAGE_NAME:$IMAGE_TAG > imageDetail.json
artifacts:
files: imageDetail.json
S3のパケットの作成
CodeBuildのプロジェクト作成
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/getting-started-create-build-project-console.html
S3にzipファイルをアップロード
- Dockerfileとsrcとbuildspec.ymlが直下にあるフォルダーをzip化してbuildプロジェクトのS3のインプットに指定したバケットに配置します
ビルドの実行
- ビルドを実行します
- 問題なければSuccessとなり、ECRのほうのimageも更新されます