세 번째, 광고 수익 내역과 수익금 기부하기
AWS ECR + Docker의 간단한 사용 흐름과 몇가지 docker 명령어를 정리합니다.
2018-12-16
Explanation
간단하게 사용하는 AWS ECR, Docker에 대해 까먹지 않기 위해 정리해둡니다.
Docker는 공식 홈페이지에 가서 받아서 설치하면 됩니다. (이전 글 참고: docker를-설치하고-간단하게-nginx-node-서버를-배포해봅니다)
AWS CLI는 Python을 설치하고 Pip를 사용하여 설치합니다. (참고: https://docs.aws.amazon.com/ko_kr/streams/latest/dev/kinesis-tutorial-cli-installation.html)
AWS CLI 설치
1 2 |
$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" $ sudo python get-pip.py |
1 |
$ sudo pip install awscli |
AWS CLI를 설치한 후
1 |
$ aws configure |
위 커맨드를 통해서 AWS 액세스 키와 시크릿키, 그리고 기본 리전, 기본 아웃풋 타입을 설정합니다.
서비스마다 다른 액세스키를 사용해야하는 경우 아래와 같이 사용할 수 있습니다.
1 |
$ vi ~/.aws/credentials |
1 2 3 4 5 6 7 8 9 10 11 |
[default] aws_access_key_id = .... aws_secret_access_key = .... [lambda] aws_access_key_id = .... aws_secret_access_key = .... [ecs] aws_access_key_id = .... aws_secret_access_key = .... |
위에 […] 부분이 라벨을 역할을 하고, default는 기본으로 사용되는 아이디와 시크릿 키값이 됩니다.
우선은 Dockerfile 파일을 포함하고 있는 프로젝트 디렉토리로 이동합니다.
몇가지 Docker 명령어
1 2 3 4 5 6 |
$ docker ps # 현재 실행중인 도커 컨테이너 리스트를 보여줍니다. $ docker images # 도커의 이미지들을 보여줍니다. $ docker system prune -a # 도커의 이미지들을 모두 지웁니다 |
다음으로 AWS ECR에 로그인 합니다.
1 |
$ aws ecr get-login --no-include-email --region ap-northeast-2 |
위에 CLI 설정에서 별도의 라벨을 만들어서 사용한다면 아래와 같이 입력합니다.
1 |
$ aws ecr get-login --no-include-email --region ap-northeast-2 --profile ecs |
위 커맨드를 입력하면 영어로 긴… 문자열이 출력되는데요. 그대로 복사해서 붙여넣기하면 ‘Success’ 과 함께 로그인 됩니다.
아래와 같은 커맨드로 도커 이미지를 만듭니다.
1 2 |
$ docker build -t docker-image-test . # 'docker-image-test'라는 이름의 이미지를 빌드합니다. |
그리고 AWS ECR에 레포지토리에 푸시합니다.
1 2 |
$ docker tag discover-image-admin 1234.. .dkr.ecr.ap-northeast-2.amazonaws.com/docker-image-test $ docker push 1234.. .dkr.ecr.ap-northeast-2.amazonaws.com/docker-image-test |
여기에서 tag를 등록하고 push를 하는 건 git에서 commit하고 push하는 거랑 비슷한거 같아요
서비스 서버에 접속해서 아래와 같은 커맨드로 AWS ECR의 레포지토리에 정보를 받아옵니다.
1 |
$ docker pull 1234.. .dkr.ecr.ap-northeast-2.amazonaws.com/docker-image-test |
이미 서비스 서버가 실행 중이라면
1 2 3 4 5 6 |
$ docker ps # 위 커맨드로 실행중인 CONTAINER ID 를 확인하고 $ docker stop 1a2c(CONTAINER ID) # 서비스를 중지하고 $ docker run -p 80:80 docker-image-test # 서비스를 다시 시작합니다. |
제가 집에서는 개인 서버를 사용하다보니 AWS를 따로 사용하지 않아서, 하나하나 직접 테스트하며 작성하지 못하였습니다. (위 글 그대로 하면 안될 수 있어요…)