ECR로 Docker Image관리하기

Yeolsim's logs·2023년 9월 13일
post-thumbnail

ECR이란?

  • AWS에서 제공하는 DOCKER image저장소
  • ECS와 통합하여 ECS에서 실행되는 애플리케이션에 대한 컨테이너 이미지를 저장,실행,관리
  • 테스크 정의에 ECR 레포 지정하면 ecs에서 애플리케이션에 적합한 이미지 가져옴

진행 순서

  1. ECR repo생성
  2. Dockerfile작성
  3. Dockerfile 빌드
    4.빌드한 Docker image를 ECR에 push



리포지토리 생성 버튼 클릭

리포지토리 이름 원하는대로 지정 후 생성

  1. Dockerfile작성
    ec2인스턴스를 하나 생성해서 docker를 설치하고 dockerfile 작성부터 빌드,푸시까지 진행했다.

아래는 내가 작성한 dockerfile

FROM r-base:4.1.2

# Install system libraries and Python 3.10
RUN apt-get update && apt-get install -y \
    build-essential \
    libcurl4-openssl-dev \
    libssl-dev \
    libxml2-dev \
    r-base-dev \
    libgsl-dev \
    libmariadb-dev \
    libsodium-dev \
    libnlopt-dev \
    wget \
    python3.10 \
    python3-pip \
    liblzma-dev \
    libbz2-dev

# Optional: Set Python 3.10 as the default Python version
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
RUN apt-get install -y python3.10-dev

# Install R packages
RUN R -e "install.packages(c('rugarch'), dependencies = TRUE);"

# Install Python packages
COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# Set working directory
WORKDIR /home/batch_py

# Copy files to container
COPY . .

# 쉘스크립트로 실행
ENTRYPOINT ["sh","execute.sh"]

원랜 파이썬 기본환경에 r설치해서 사용하려고 했었는데 에러가 잘 안잡혀서 방향을 조금 틀었다.

r환경에 대한 기존에 사용중인 dockerfile이 있어서 여기에 파이썬,파이썬 패키지를 설치해서 사용해보기 위해 테스트했는데 됨 오 ㅎㅎ

이거 오류 잡는데 거의 하루 꼬박 걸렸다.

  1. Dockerfile 빌드 및 ECR푸시
    ECR>푸시명령보기에서 시키는대로 하면 된다.
  • aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin (계정명).dkr.ecr.ap-northeast-2.amazonaws.com
    ->인증토큰으로 docker클라이언트를 인증
  • docker build -t (레포지토리명) .
    작성한 dockerfile이 있는 디렉토리에서 ECR에서 만든 레포지토리 이름으로 빌드하면된다.(이때 현재 디렉토리의 dockerfile 파일명은 Dockerfile이여야함)
  • docker tag (레포지토리명):latest (계정명).dkr.ecr.ap-northeast-2.amazonaws.com/riskweather:latest
  • docker push (계정명).dkr.ecr.ap-northeast-2.amazonaws.com/riskweather:latest

푸시까지하고 ECR 레포지토리 들어가보면 lateset로 이미지가 잘 푸시 된걸 확인할수 있다!

0개의 댓글