Amazon ECR(Elastic Container Registry)
<ECR Docker CLI 사용>
AWS 회원가입 혹은 로그인
IAM 사용자 추가 및 AmazonEC2ContainerRegistryFullAccess 정책 연결
액세스 키 ID 및 비밀 액세스 키 확인
AWS CLI 설치(Linux): https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-install
AWS CLI 설정
aws configure
~/.aws/config
or ~/.aws.configure
확인
[default]
region = ap-northeast-2
output = json
~/.aws/credentials
확인
[default]
aws_access_key_id = *******
aws_secret_access_key = ***********
ECR repository 생성
aws ecr create-repository --repository-name <name> --region ap-northeast-2
# output
{
"repository": {
"repositoryArn": "arn:aws:ecr:ap-northeast-2:************:repository/velog",
"registryId": "************",
"repositoryName": "velog",
"repositoryUri": "************.dkr.ecr.ap-northeast-2.amazonaws.com/velog",
"createdAt": "2021-03-07T19:48:51+09:00",
"imageTagMutability": "MUTABLE",
"imageScanningConfiguration": {
"scanOnPush": false
},
"encryptionConfiguration": {
"encryptionType": "AES256"
}
}
}
ECR 로그인 (Docker CLI와 함께 사용)
aws ecr get-login-password \
--region <region> \
| docker login \
--username AWS \
--password-stdin <registryId>.dkr.ecr.<region>.amazonaws.com
# ...
# Login Succeeded
로컬에서 Docker 이미지 생성 및 푸쉬
docker build -t raccoonhj33/velog .
docker tag raccoonhj33/velog <repositoryUri>
docker push <repositoryUri>
서버에서 ECR 똑같이 CLI 설정 및 로그인
# 안될 경우 try
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
sudo systemctl restart docker
sudo chmod 666 /var/run/docker.sock
서버에서 이미지 풀, 컨테이너 생성 및 실행
sudo docker pull <repositoryUri>
sudo docker run --rm -d -it -p 80:80 --name velog <repositoryUri>
sudo docker cp /tmp/.env velog:/srv/velog # env 파일 따로 Docker에 복사
sudo docker exec -d velog python manage.py runserver --settings=config.settings.prod 0.0.0.0:80