Amazon Lightsail에 컨테이너 웹 앱 배포

시작 안내서

모듈 1: 컨테이너 준비

이 모듈에서는 컨테이너화된 기본 웹 애플리케이션을 생성합니다

소개

이 모듈에서는 가이드와 함께 제공된 샘플 애플리케이션을 살펴봅니다.  제공된 웹 애플리케이션을 로컬에서 실행하고 클라우드에 배포하기 전에 로컬 랩톱에서 웹 애플리케이션을 테스트하기 위한 컨테이너를 구축하는 작업을 수행합니다.

학습 내용

  • 기존 웹 애플리케이션에 대한 컨테이너 구축
  • 로컬에서 애플리케이션을 테스트하기 위한 컨테이너 실행

사전 요구 사항

이 가이드를 시작하기 전에 필요한 사항은 다음과 같습니다.

 소요 시간

10분

 모듈 사전 요구 사항

  • 관리자 수준의 액세스 권한이 있는 AWS 계정**
  • 권장 브라우저: 최신 버전의 Chrome 또는 Firefox

[**]생성된 지 24시간이 지나지 않은 계정은 이 자습서를 완료하는 데 필요한 서비스에 액세스할 권한이 아직 없을 수 있습니다.

구현

클라이언트 앱 생성

코드 폴더에 제공된 웹 애플리케이션은 Python용 Flask 애플리케이션 프레임워크로 개발된 웹 애플리케이션입니다.

간단히 설명하자면 Flask 프레임워크는 HTTP 요청을 수신하는 미니 서버, 특정 요청(HTTP verb 및 /경로)을 Python 코드에 연결하는 라우팅 메커니즘 및 최종 HTML을 렌더링하는 템플릿 엔진을 포함합니다.

모범 사례는 Flask 애플리케이션 앞에 전용 웹 서버를 두는 것입니다. 웹 서버는 이미지, 스타일 시트(CSS) 및 JavaScript(JS) 파일과 같은 정적 콘텐츠를 제공하도록 구성되었습니다. 웹 서버는 모든 기타 요청을 Flask 애플리케이션으로 전달합니다. 이 가이드에서는 Nginx 웹 서버 사용을 선택합니다.

Nginx와 Flask 앱 간의 통신은 uWSGI 프로토콜로 이루어집니다. uWSGI 구성 요소는 Flask에 의해 제공됩니다.

애플리케이션의 설정은 이 이미지에 설명되어 있습니다.

gsg-build-lightsail-5

애플리케이션은 다음 파일로 이루어집니다.

  • application.py는 애플리케이션의 핵심이며 로직, 백엔드와의 통신(있는 경우) 등을 정의합니다.
  • Pipfile은 웹 애플리케이션의 Python 종속성을 나열합니다.
  • Dockerfile은 컨테이너를 구성합니다. 공식 Nginx 컨테이너에서 시작하여 Python, Flask 및 해당 종속성을 추가합니다. 그런 다음 Nginx 구성 파일 및 시작 스크립트를 복사합니다.
  • nginx-app.conf는 Nginx 구성 파일입니다. 이는 다른 요청이 uWSGI/Flask로 전달되는 동안 정적 콘텐츠가 Nginx에 의해 제공되도록 합니다.
  • start.sh는 Nginx 및 uWSGI 데몬을 시작합니다.

이 애플리케이션은 새로운 서비스 또는 제품의 시작을 알리는 간단한 웹 애플리케이션이며 사전 등록을 캡처하는 양식이 있습니다.

데이터 다운로드

컨테이너를 구축하고 테스트하려면 프로젝트의 로컬 사본을 다운로드합니다.

터미널을 열고 다음 명령을 입력합니다.

git clone https://github.com/aws-developer-center/dev-center-guides/

cd dev-center-guides/GS_003_web_app_lightsail/code

지금부터 모든 명령은 사용자가 이 디렉터리로 이동했다고 가정합니다.

컨테이너 구축

메인 애플리케이션 구성 요소와 이들이 함께 작동하는 방법에 대해 이해했으므로 이제 컨테이너를 구축하겠습니다.

컨테이너 내에 애플리케이션을 구축하려면 터미널을 사용하여 다음 명령을 입력합니다.

# Assuming you navigated to the application directory as instructed above 
# Make sure to include the space and period after signup in the below command

docker build -t demo-flask-signup .


몇 분 후(인터넷 대역폭에 따라 다름), 컨테이너가 구축됩니다.

다음 명령을 사용하여 시스템에 컨테이너 이미지를 나열할 수 있습니다.

docker images

# It should output something similar to 

REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
demo-flask-signup   latest    26d7924c5980   28 minutes ago   640MB
(...)

컨테이너 테스트

로컬 시스템에서 컨테이너를 테스트하려면 컨테이너를 시작한 다음 브라우저에서 컨테이너를 지정합니다.

docker run -p 8080:80               \
           --rm                     \
           -v ~/.aws:/root/.aws     \
           demo-flask-signup:latest

Docker 실행 명령에 전달된 옵션은 다음과 같습니다.

  • -p 8080:80, 로컬 시스템 TCP 포트 8080을 컨테이너 포트 80(Nginx)으로 연결
  • --rm, 컨테이너가 멈춘 경우 Docker에게 컨테이너 제거 지시
  • -v ~/.aws:/root/.aws, 디렉터리 ~/.aws에서 컨테이너 디렉터리 /root/.aws로 로컬 시스템 AWS CLI 구성 매핑
  • 마지막으로, demo-flask-signup:latest - 방금 구축한 컨테이너의 이름 및 태그.

이제 컨테이너가 실행 중이며, 브라우저를 열고 http://localhost:8080에서 가리킵니다. 아래에서 보이는 바와 같이 애플리케이션 홈 화면이 표시되어야 합니다.

gsg-build-lightsail-1

축하합니다. 이제 컨테이너가 클라우드로 배포될 준비가 되었습니다.

결론

이 첫 번째 모듈에서 우리는 가장 기본적인 컨테이너 애플리케이션을 구축하고 이를 로컬에서 구동하여 작동하는지 확인했습니다. 다음 모듈에서는 Amazon Lightsail Container Service 생성 방법을 알아봅니다.

다음: 인프라 생성

내용이 마음에 드셨는지요.

피드백을 제공해 주셔서 감사합니다.
이 페이지가 도움이 되어 기쁩니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?
닫기
피드백을 제공해 주셔서 감사합니다.
이 페이지가 도움이 되지 못해 죄송합니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?
닫기