CircleCI1.0からCircleCI2.0への移行作業中、ECRへのpushでハマった。
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Exited with code 1
ようやく解決したので備忘録として記事に残します。
CircleCI1.0でのECRデプロイコード
CircleCIの設定画面から
AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
をセットしておく
circle.yml
machine:
services:
- docker
node:
version: 6.0.0
environment:
AWS_ID: {ここにAWS ACCOUNT ID}
dependencies:
override:
- npm install
test:
override:
- npm run build
deployment:
development:
branch: master
commands:
- $(aws ecr get-login --region ap-northeast-1)
- docker build -t hogehoge:fuga-$CIRCLE_SHA1 .
- docker tag hogehoge:fuga-$CIRCLE_SHA1 ${AWS_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/hogehoge:fuga-$CIRCLE_SHA1
- docker push ${AWS_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/hogehoge:fuga-$CIRCLE_SHA1
CircleCI2.0 での書き方(ボツ)
頑張って2.0に置き換えてみた
.circleci/config.yml
version: 2
defaults: &defaults
working_directory: ~/workspace
docker:
- image: circleci/python:2.7-node-browsers
environment:
AWS_ID: {ここにAWS ACCOUNT ID}
jobs:
ecr:
<<: *defaults
steps:
- checkout
- run: npm install
- run: npm run build
- run: sudo pip install awscli
- run: $(aws ecr get-login --region ap-northeast-1 --no-include-email)
- run: docker build -t hogehoge:fuga-$CIRCLE_SHA1 .
- run: docker tag hogehoge:fuga-$CIRCLE_SHA1 ${AWS_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/hogehoge:fuga-$CIRCLE_SHA1
- run: docker push ${AWS_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/hogehoge:fuga-$CIRCLE_SHA1
# Workflows
workflows:
version: 2
ecr_push:
jobs:
- ecr:
filters:
branches:
only: /^master/
Docker daemonがいないと怒られてしまった。
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
CircleCI2.0 での書き方(正)
丸一日悩んだ結果、公式ドキュメントに setup_remote_docker
を発見。
これで Docker in Dockerが実現するらしい。
.circleci/config.yml
version: 2
defaults: &defaults
working_directory: ~/workspace
docker:
- image: circleci/python:2.7-node-browsers
environment:
AWS_ID: {ここにAWS ACCOUNT ID}
jobs:
ecr:
<<: *defaults
steps:
- checkout
# Docker in Docker
- setup_remote_docker # コレを書くことでDocker上にDockerが立ち上がる
- run: npm install
- run: npm run build
- run: sudo pip install awscli
- run: $(aws ecr get-login --region ap-northeast-1 --no-include-email)
- run: docker build -t hogehoge:fuga-$CIRCLE_SHA1 .
- run: docker tag hogehoge:fuga-$CIRCLE_SHA1 ${AWS_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/hogehoge:fuga-$CIRCLE_SHA1
- run: docker push ${AWS_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/hogehoge:fuga-$CIRCLE_SHA1
# Workflows
workflows:
version: 2
ecr_push:
jobs:
- ecr:
filters:
branches:
only: /^master/