전체 작업 순서
- Docker 이미지 생성
- docker가 구동될 수 있는 로컬 환경 | 원격지 환경에서 이미지를 생성한다
- 이미지를 생성(이미지 생성 방법은 2가지 정도로 나뉜다)
- Dockerfile을 다운로드(GitHub, DockerHub) 거나 직접 작성하여 이미지 생성
- 기존 이미지에 설정을 추가하여 신규 이미지 생성
- 생성한 이미지가 Docker 환경에서 구동되는지 확인한다.
- 로그인(ECR 기본 레지스트리에 대한 인증)을 통해 권한을 획득한다.
- 업로드 위치가 될 Repository 생성한다.
- Repository 업로드 될 푸시 이미지에 태그를 지정한다.
- 이미지 푸시를 통해 Repository 저장한다.
목표
- github에 제공하는 오픈소스를 통해 이미지 생성하고 ECR에 업로드한다.
- Redmine의 시간 정책은 구동 서버의 Timezone을 따르며 기본 값은 UTC이다. 컨테이너의 Timezone을 한국시간으로 설정되도록 Dockerfile을 수정하고 이미지를 생성한다.
작업 수행
0. 사전 환경 구성
- Docker구동 환경 구성
- ECR접근/생성 권한 획득
- DB(Redmine 구동시 활용할 DB가 이미 구성되어 있음을 전제로 작업 진행)
1. Docker 이미지 생성
- github에 제공하는 오픈 소스 다운로드(https://github.com/bitnami/bitnami-docker-redmine/tree/4.1.1-debian-10-r173)
$ git clone https://github.com/bitnami-docker-redmine.git - Dockerfile 수정:
$ cd bitnami-docker-redmine/4/debian-10
$ vi Dockerfile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
## timezone change(add 2020.11.05)
RUN cp -p /usr/share/zoneinfo/Asia/Seoul /etc/localtime
...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - docker build -t [이미지명] [도커 파일 경로]
$ docker build -t bitnamei/redmine/custom .
2. 생성한 이미지가 Docker 환경에서 구동되는지 확인
- bitnami/redmine의 경우 web 컨테이너와 DB 컨테이너를 별도로 구성하고 네트워크를 공유하여 구동한다.
- github에서 제공하는 오픈소스는 이러한 구동을 위해 Docker-compose를 통한 구동 방법을 설명한다.
- 구성 목적에 따라 별도의 컨테이너가 아닌 외부 DB를 연결하여 사용도 가능하다
- 컨테이너 구동 시 외부 DB정보는 변수 옵션을 통해 전달한다
- docker run -it -p -d --name [구동될 컨테이너 명] -e [환경변수 1] -e [환경변수 2] [이미지명]
$ docker run -it -p 80:3000 -d --name new_redmine \
-e REDMINE_DB_MYSQL=10.10.10.1 \
-e REDMINE_DB_USERNAME=root \
-e REDMINE_DB_PASSWORD=[PASSWORD] \
-e REDMINE_DB_NAME=bitnami_redmine \
-e REDMINE_PASSWORD=[PASSWORD] \
bitnamei/redmine/custom
3. 로그인(ECR 기본 레지스트리에 대한 인증: AWS Cli로 인증하기)
- aws ecr get-login-password --region [리전] --profile [aws profile] | docker login --username AWS --password-stdin [ECR_URL]
$ aws ecr get-login-password \
--region ap-northeast-2 \
--profile=[profie] | docker login \
--username AWS \
--password-stdin XXXXXXX.dkr.ecr.ap-northeast-2.amazonaws.com
4. Repository 생성
- aws ecr create-repository --repository-name [리포지토리 이름] --image-scanning-configuration scanOnPush=true --region [리전] --profile [aws profile]
$ aws ecr create-repository \
--repository-name new_redmine \
--image-scanning-configuration scanOnPush=true \
--region ap-northeast-2 --profile=[profile]
5. Repository 업로드할 푸시 이미지 태그 지정
- docker tag [이미지] [ECR_URL]/[리포지터리 이름]:[지정할 태그]
$ docker tag bitname/redmin/custom:1.0.0 \
XXXXXXXXX.dkr.ecr.ap-northeast-2.amazonaws.com/redmine:1.0.0
6. 이미지 푸시
- docker push [ECR_URL]/[리포지터리 이름]:[지정할 태그]
$ docker push XXXXXXXXXX.dkr.ecr.ap-northeast-2.amazonaws.com/redmin:1.0.0
[참고 블로그]
https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/what-is-ecr.html
https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/getting-started-cli.html
https://bluese05.tistory.com/51
'IT > AWS' 카테고리의 다른 글
Amazon Appflow는 어떤서비스인가? (0) | 2021.10.04 |
---|---|
AWS 자격증 (0) | 2021.01.25 |
AWS EC2 SSH 접속 (0) | 2020.11.08 |
AWS WAF 그리고 WAF Security Automations (0) | 2020.06.24 |
댓글