안녕하세요, 오늘은 Docker와 Google Colud Console을 이용해서 Flask로 만든 Web을 배포해보겠습니다. 업로드 할 것은 다음과 같이 진행할 예정입니다.
- Google Cloud 기본 설정
- VM instance 생성
- Docker설치, app.py 생성 및 설정
- Dockerfile 생성, 빌드 및 Container 생성
- 방화벽 설정
- 완성
Google Cloud 기본 설정
VM instance를 생성하기 전 위의 링크로 들어가서 카드를 등록해야합니다.
카드를 등록하면, 다음과 같이 무료 체험판 사용을 위해 300$을 제공해줍니다. 그리고 좌하단에 VM 만들기로 들어갑니다.
Compute Engine API를 사용 누릅니다. (1~2분 소요)
Google Cloud VM instance 생성
다음 사이트에 접속을 하면 위의 사진과 같이 나오면서 인스턴스 만들기를 누릅니다
이름은 test-1로 바꾸고, 지역은 서울로 지정했습니다.
액세스 범위에 대해서는 다음과 같이 설정했으며, 방화벽은 HTTP와 HTTPS 트래픽 허용을 체크하고 만들기 버튼을 눌렀습니다. (만들기 버튼 누르고 VM instance 생성까지 1 ~ 2분 소요)
다음과 같이 인스턴스가 만들어진 것을 볼 수 있습니다.
Docker설치, app.py 생성 및 설정
브라우저 창에서 열기를 통해서 인스턴스를 실행합니다.
다음과 같이 창이 나타나면서 이제부터 명령어를 실행합니다.
# docker 설치
sudo apt install docker.io -y
# app.py 생성
touch app.py
# app.py 수정
vi app.py
app.py 파일을 수정합니다.
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello, Flask"
if __name__ == "__main__":
app.run()
마지막으로 ESC 버튼을 누르고 :wq Enter 누르고 파일을 저장하고 나갑니다.
Docker 파일 생성 및 설정
Dockerfile 생성 및 수정
# Dockerfile 생성
touch Dockerfile
# Dockerfile 수정
vi Dockerfile
Dockerfile 파일 내용
FROM python:3.12
ADD . /app
RUN pip install flask
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]
i 버튼을 눌러서 Insert Mode로 설정한 뒤, 다음과 같은 Text를 입력한 뒤, :wq를 눌러서 저장하고 나갑니다.
Docker 파일 빌드 및 컨테이너 생성
명령어를 통해 생성한 Dockerfile을 빌드하고 컨테이너를 생성합니다.
# 현재 디렉토리에 있는 Dockerfile을 이용해 이름이 test인 이미지 빌드
sudo docker build -t test .
# 빌드된 이미지(test)를 이용해 아룸아 test1이라는 컨테이너 생성 및 5000포트를 이용하여 접속
sudo docker run --name=test1 -d -t -p 5000:5000 test
Conatiner ID 확인
# 현재 실행중인 Container 확인
sudo docker ps
다음과 같이 Container ID와 여러 정보를 알 수 있습니다.
Conatiner에서 Flask가 잘 실행되었는지 확인하기 위해 로그를 확인합니다.(logs 뒤에 Container ID의 앞자리만 입력하면 됨)
sudo docker logs 829
다음과 같이 실행이 잘 되고있는 것을 확인할 수 있습니다.
외부 IP와 5000 포트를 결합하여 입력창에 입력합니다. (여기서 https 가 아닌 http를 이용해서 접속해야 합니다.)
하지만 다음과 같이 무한로딩에 걸리면서 접속이 되지 않는데, 이 때 방화벽을 설정해주어야 합니다.
방화벽 설정
방화벽에 접근하는 방법
- 좌상단에 메뉴버튼 클릭
- VPC 네트워크 화살표 클릭
- 그 안에 있는 방화벽 메뉴 클릭
접근이 어려운 분들은 사진 밑에 링크 달아놨습니다.
상단에 있는 방화벽 규칙 만들기를 누릅니다.
다음과 같이 설정합니다.
- 대상 : 네트워크의 모든 인스턴스
- 소스 IPv4 범위 : 0.0.0.0/0
- 프로토콜 및 포트 : 모두 허용
만들기 버튼을 눌러서 방화벽 규칙을 만듭니다.
다음과 같이 test2 방화벽이 만들어진 것을 확인할 수 있습니다.
완성
방화벽 생성 이후 다음과 같이 웹사이트에 접근할 수 있습니다.
이상입니다!
'Program > Docker' 카테고리의 다른 글
[Docker] Docker-Compose에 대해 알아보자 (0) | 2024.05.18 |
---|---|
[Docker] Docker Container SSH 접속하는 방법 (0) | 2024.05.03 |
[Docker] Dockerfile 명령어 모음집 (1) | 2024.04.19 |
[Docker] Container 내부에서 GPU 사용하는 방법 (0) | 2024.04.10 |