우선 docker 도커란 무엇인가
도커의 CI
즉, 도커를 상징하는 이미지 를 보면
고래로 보이는 형상물이
컨테이너를 싣고있는 모습을 하고 있는것을 알 수 있다
말 그대로
Docker는 소프트웨어를 "컨테이너"라는 형태로 패키징하고 배포하는 도구인데
여기서 컨테이너는
프로그램과 그 프로그램이 작동하는 데 필요한 모든 것
(코드, 라이브러리, 설정 파일 등)을 포함한 작은 단위다
그렇다면 왜 사용할까
왜?
로컬 뿐만 아니라 다른 위치에서도 사용 할수 있게 서버에 올리는데
이때 작업환경과 동일한 환경을 만들게 된다
Docker는 어느 환경에서든 동일하게 작동하게 만들어주는데
Docker를 사용하면 컨테이너를 한 번 만들어 두고,
필요한 곳에 간단히 가져다 쓸 수 있는데
이렇게 하면 설정 과정이 크게 줄어든다
컨테이너는 서로 독립적이면서 같은 시스템에서
여러 개의 컨테이너를 효율적으로 실행할 수 있게 한다
쉽게 말해
Docker를 도시락 상자에 비유 한다면
프로그램 - 다양한 음식을 도시락에 담는다면
컨테이너 - 도시락 상자는 음식을 담는 락앤락 이 락앤락은 음식을 상하지 않게 하고,
어디서든 동일한 상태로 먹을 수 있게 해준다
Docker - 여러 개의 도시락 상자를 한 번에 만들고,
필요할 때마다 꺼내서 동일한 음식을 즐길 수 있게 해주는 도구
음식(프로그램)이 어디서나 신선하고 동일한 상태로 제공될 수 있다
위의 링크를 따라 들어가 각 환경에 맞게 설치를 하자
설치가 진행되는 동안
AWS에서의 설정을 하도록 하자
AWS 설정
https://console.aws.amazon.com/iam/
링크를 따라들어가던가 위 화면과 같이 IAM을 검색하여 들어가도록 하자
그리고 좌측의 사용자를 클릭
사용자 이름을 클릭
그리고 권한추가를 클릭하자
직접 정책연결을 선택후
container를 검색하여
아마존 EC2 컨테이너 레지스트리 풀 액세스를 선택하자
그리고 권한추가를 해 준뒤에
컨테이너를 검색하여
ECR을 선택
서비스가 아니라 레지스트리를 선택하자
그리고 리포지토리 생성을 클릭
이때 프라이빗을 설정하면 비용이 발생하니
FreeTier 라면 퍼블릭을 선택하도록 하자
이부분에서 이름은
지금 올리려고 하는 서버의 폴더 이름을
아래와 같이 참고하여
-dev 를 추가하여 적어주자
그리고 생성
좌측의 퍼미션 클릭
편집 클릭
명령문 추가 클릭
정책 JSON편집을 클릭하여
아래 문구를 copy & paste 하자
ecr-public:GetAuthorizationToken
위에 들어가도 상관없고 아래 들어가도 상관없다
들여쓰기를 맞춰주고 저장을 클릭하자
혹시 이곳에 추가가 안됐다면
, 쉼표를 까먹지 않았나 확인하자
VSC 설정
확장자 없이 Dockerfile 라고 파일을 생성하자
이런게 뜬다면 인스톨 하고
안 뜬다면
좌측의 익스텐션을 클릭하여
이 녀석을 설치하자
설치가 완료되면 좌측의 컨테이너를 싣고 있는 고래가 생긴다
아무튼 생성한 Dockfile에
FROM public.ecr.aws/lambda/python:3.10
COPY . ${LAMBDA_TASK_ROOT}
COPY requirements.txt .
RUN yum -y install gcc
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
CMD ["app.handler"]
라고 작성하고
이번엔 아래와 같이 파일을 생성후 내용을 적어준다
__pycache__/
.git
.serverless/
.gitignore
.dockerignore
serverless.yml
그리고 이번엔 이 파일을 들어가
좌측의 부분을 우측의 부분처럼 수정하자
그리고 이 부분은
아래의 파일을 들어가
여기에 저 부분만 copy&paste 해주고
위의 플러그인 부분은 전부 삭제한다
그리고 이번엔 app.py로 들어간 뒤
우선 아래의 문구를 입력해 설치한 뒤
pip install serverless-wsgi
임포트 문을 작성하고
아래의 문구를 아래의 위치에 작성
def handler(event, context) :
return serverless_wsgi.handle_request(app, event, context)
그리고 sls deploy를 입력하여
정상적으로 작동하는지 확인하자
정상적으로 작동하는것을 확인 할 수 있다
'AWS > Docker' 카테고리의 다른 글
Docker 자동배포 Git Actions (0) | 2024.05.28 |
---|