작업 노트북이 M1 Macbook으로 교체하면서 python 패키지 설치시 너무나도 많은 에러에 시달렸습니다. 오류없이 설치할 방법이 없을까 생각하다 도커로 개발환경을 구성해보기로 하였습니다.

현재 회사에서는 AWS ECR로 서비스 이미지를 관리하고 EKS, ECS로 서비스를 운영하고 있습니다 이미 서비스가 도커를 사용하여 배포 운영하고 있으니 어렵지 않게 로컬에서 이미지를 실행시켜 개발환경으로 사용할 수 있습니다.

AWS CLI 확인

aws-cli 사용이 가능한지 확인합니다. ~/.aws/credentials 설정이 완료되어야 합니다 Github_Logo

aws configure get aws_access_key_id --profile prod
export AWS_PROFILE=prod

ECR 확인

aws cli로 확인하거나 aws console에서 조회하여 원하는 이미지를 찾습니다.

aws ecr describe-repositories

aws ecr describe-images --repository-name "repo-name”

ECR 로그인

로컬에 설치된 도커에서 aws ECR의 이미지를 사용하기 위해서는 도커 aws 로그인이 필요합니다.

# 도커 로그인 비밀번호 확인
DOCKER_PASSWORD=$(aws ecr get-login-password --region ap-northeast-1)

# ECR 로그인
docker login --username AWS -p $DOCKER_PASSWORD 888275.dkr.ecr.ap-northeast-1.amazonaws.com

# 환경변수에 저장한 비밀번호 제거
unset DOCKER_PASSWORD

로그인 성공 후 ECR에서 도커 이미지를 받습니다.

docker pull 888275.dkr.ecr.ap-northeast-1.amazonaws.com/repo-name:latest

도커 실행

로컬환경의 코드 디렉토리와 연결하여 사용하는 것을 추천합니다. 코드 수정을 도커에 바로 반영 하므로 편리합니다.

docker run -it \
-p 5050:5000 \
--volume /Users/user_name/Documents/repo-name:/app \
--platform linux/amd64 \
--entrypoint "/bin/sh" \
--name="dodo-local" \
888275.dkr.ecr.ap-northeast-1.amazonaws.com/repo-name:latest

도커 쉘 프롬포트가 이상할 경우 설정을 추가합니다.

export PS1='$(whoami)@$(hostname):$(pwd)> '

도커에서 호스트(로컬)의 접근 할 시 localhost 대신 host.docker.internal를 사용해야 합니다.

정리

이미 구성된 이미지를 로렄 도커로 실행하여 개발환경으로 사용하는 방법을 정리합니다.

로컬에서 직접 패키지를 설치하기보다 이미 ECR을 사용하고 있다면 도커를 사용하는 방법도 추천합니다.