-
Docker를 사용하여 간단한 웹 애플리케이션을 만드는 단계별 실습Cloud/Container 2023. 2. 12. 23:03
사전 요구 사항
- Docker가 설치되어 있고 실행 중인 컴퓨터
단계 1: 새 디렉터리 생성
웹 애플리케이션을 위한 새 디렉터리를 만들고 터미널에서 해당 디렉터리로 이동합니다.
mkdir my-web-app cd my-web-app
단계 2: 웹 페이지 만들기
다음 내용을 포함하는 index.html 파일을 만듭니다:
<!DOCTYPE html> <html> <head> <title>My Web App</title> </head> <body> <h1>Hello, World!</h1> </body> </html>
단계 3: Dockerfile 만들기
Dockerfile 이라는 이름의 새 파일을 만들고 다음 내용을 입력합니다:
# 공식 Nginx 런타임을 부모 이미지로 사용 FROM nginx:alpine # 웹 페이지를 컨테이너로 복사합니다. COPY index.html /usr/share/nginx/html
단계 4: Docker 이미지 빌드
터미널에서 Dockerfile이 있는 디렉터리로 이동하고 다음 명령어를 실행하여 Docker 이미지를 빌드합니다:
docker build -t my-web-app .
-t 플래그는 이미지를 이름으로 태그하기 위해 사용되며, 이 경우 my-web-app로 태그됩니다.
단계 5: Docker 컨테이너 실행
다음 명령을 실행하여 Docker 컨테이너를 시작합니다:
docker run -d -p 80:80 --name my-web-app my-web-app
-d 플래그는 컨테이너를 백그라운드 모드로 실행하고, -p 플래그는 컨테이너의 80번 포트를 호스트 머신의 80번 포트에 매핑합니다.
단계 6: 웹 애플리케이션에 액세스하기
웹 브라우저를 열고 http://localhost로 이동합니다. 페이지에 "Hello, World!" 메시지가 표시됩니다.
이것으로 간단한 웹 애플리케이션을 Docker를 사용하여 만들었습니다.
애플리케이션에 더 많은 파일을 추가하고 Dockerfile을 수정하여 필요에 맞게 변경할 수 있습니다.
단계 7: 컨테이너 멈추기 및 삭제하기
Docker 컨테이너를 종료하고 삭제하려면 다음 명령어를 실행합니다:
docker stop $(docker ps -aqf "name=my-web-app") && docker rm $(docker ps -aqf "name=my-web-app")
이 명령어는 다음과 같은 작업을 수행합니다:
- docker ps -aqf "name=my-web-app": my-web-app 이름을 갖는 모든 컨테이너의 ID를 반환합니다.
- docker stop $(docker ps -aqf "name=my-web-app"): 해당 컨테이너를 모두 중지합니다.
- docker rm $(docker ps -aqf "name=my-web-app"): 해당 컨테이너를 모두 삭제합니다.
이제 컨테이너가 중지되고 삭제되었습니다. 이제 다시 시작하려면 단계 5에서 설명한 명령을 실행하면 됩니다.
--------------------------------------------------------------------------------------------------------
다음은 컨테이너에 들어간 index.html 파일을 수정하고 v2 버전의 이미지를 빌드하는 예제입니다.
단계 8: 웹 페이지 수정
index.html 파일을 다음 내용으로 수정합니다:
<!DOCTYPE html> <html> <head> <title>My Web App v2</title> </head> <body> <h1>Hello, World!</h1> <p>This is version 2 of my web app.</p> </body> </html>
단계 9: Dockerfile 수정
Dockerfile 파일을 다음과 같이 수정하여 새로운 이미지를 빌드할 수 있습니다.
아래와 같은 내용의 이전과 동일한 도커 파일로 빌드를 다시 한번 수행합니다.
# Use an official Nginx runtime as a parent image FROM nginx:alpine # Copy the updated web page to the container COPY index.html /usr/share/nginx/html
단계 10: Docker 이미지 빌드
터미널에서 Dockerfile이 있는 디렉터리로 이동하고 다음 명령어를 실행하여 새 Docker 이미지를 빌드합니다:
docker build -t my-web-app:v2 .
-t 플래그를 사용하여 이미지 이름을 my-web-app 대신 my-web-app:v2로 태그했습니다.
단계 11: Docker 컨테이너 실행
이제 v2 이미지를 사용하여 컨테이너를 실행합니다.
docker run -d -p 80:80 --name my-web-app-v2 my-web-app:v2
단계 12: 웹 애플리케이션에 액세스하기
새로운 버전의 웹 애플리케이션에 액세스하기 위해 웹 브라우저를 열고 http://localhost로 이동합니다. 새로운 버전의 "Hello, World!" 메시지와 추가된 텍스트 "This is version 2 of my web app."가 표시됩니다.
단계 13: 컨테이너 멈추기 및 삭제하기
이전 단계와 동일한 명령을 사용하여 v2 컨테이너를 중지하고 삭제합니다.
docker stop my-web-app-v2 && docker rm my-web-app-v2
이제 컨테이너가 중지되고 삭제되었습니다.
# 자기 주도 과제
이번에는 This is version 1 of my web app. 라고 출력되는 my-web-app 이미지의 v1 버전을 만들어서 실행 시키고 브라우저에서 메시지를 확인하세요.
'Cloud > Container' 카테고리의 다른 글
Docker 이미지를 수정하여 Docker Hub로 푸시하는 실습. (0) 2023.02.13 chroot 명령어로 도커 컨테이너와 유사한 환경을 만들어보는 실습 (0) 2023.02.07