본문 바로가기
IT/AWS

Redmine 이미지를 만들고 ECR 에 이미지 업로드하기

by 엔지니어 문 2021. 1. 6.

전체 작업 순서

  1. Docker 이미지 생성
    • docker가 구동될 수 있는 로컬 환경 | 원격지 환경에서 이미지를 생성한다
    • 이미지를 생성(이미지 생성 방법은 2가지 정도로 나뉜다)
      • Dockerfile을 다운로드(GitHub, DockerHub) 거나 직접 작성하여 이미지 생성
      • 기존 이미지에 설정을 추가하여 신규 이미지 생성
  2. 생성한 이미지가 Docker 환경에서 구동되는지 확인한다.
  3. 로그인(ECR 기본 레지스트리에 대한 인증)을 통해 권한을 획득한다.
  4. 업로드 위치가 될 Repository 생성한다.
  5. Repository 업로드 될 푸시 이미지에 태그를 지정한다.
  6. 이미지 푸시를 통해 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

 

Amazon Elastic Container Registry이란 무엇입니까? - Amazon ECR

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/getting-started-cli.html

 

AWS CLI를 사용하여 Amazon ECR 시작하기 - Amazon ECR

경우에 따라서는 ec2-user가 도커 데몬에 액세스할 수 있는 권한을 제공하기 위해 인스턴스를 재부팅해야 할 수도 있습니다. 다음 오류가 표시될 경우 인스턴스를 재부팅해 보십시오. Cannot connect t

docs.aws.amazon.com

https://bluese05.tistory.com/51

 

AWS EC2 Container Registry(ECR) 어렵지 않아요

AWS EC2 Container Registry(ECR) 어렵지 않아요  ECR (EC2 Container Registry) 은 Docker Container 의 이미지를 저장하는 Repository 서비스이다. 기능은 Docker hub 의 Repository 서비스와 동일하다. 특별..

bluese05.tistory.com

 

'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

댓글