티스토리 뷰

 

이번 블로그는 Dash와 Docker을 사용해 웹 창에 띄워보려한다. Python을 사용해 웹에 대시보드를 구축하는 최소한의 환경을 써보려 한다.  이번에는 Python을 사용해 웹에 대시보드를 구축하는 최소한의 환경을 써보려 한다. 이를 계기로 차차, Dash를 구성하는 시각화와 DB를 연동하고 매일 갱신되는 블로그를 적을 계획이다.

 

1. EC2 환경

 

AWS EC2 에서 아래와 같은 환경을 먼저 구축해 놓아야 한다.

  • 운영체제: Ubuntu 20.04
  • 인스턴스 유형: t2.large
  • Port 범위
    • 22
    • 8050 (Dash)
    • 8888 (Jupyter notebook)

 

 

AWS EC2 dashboard에 가서 보안그룹인바운드 규칙을 편집해 주어야 한다.

8050 포트 규칙 추가 및 사용자 지정 탭을 눌러 위치 무관으로 바꾸어 주어야 한다. (웹 배포의 목적)

 

 

위 사진처럼 포트 범위에 8050이 추가된 것을 볼 수 있다.

 

2. Dash 설치하기

 

우선 다음의 코드를 사용하여 dash 모듈을 설치 해준다.

 

pip3 install dash

 

3. App 설치하기

 

 

우선 test용 디렉토리를 생성해보자. 

 

mkdir 명령어는 make directory의 약자로써 디렉토리를 생성할 때 사용하는 명령어이다.

 

 

mkdir dash

 

 

만들고 ll을 입력하면 아래와 같이 dash 디렉토리가 생성된 것을 확인 할 수 있다.

 

 

 

 cd dash
 
 touch app.py

 

위 코드를 입력하면 app.py 라는 파일이 생성된다. 그 다음 아래 코드를 입력하여 vi 편집기로 들어간다.

 

 

vi app.py

 

 

vi 편집기로 들어간 후 그 상태에서  'a' 를 눌러 insert mode로 변경한 다음 아래 코드를 넣어주자. (간략한 시각화 코드)

 

그 후에는 esc 키를 입력한 후 클론(:)을 입력한 후  wq를 입력하여 저장한후 나간다.

 

 

# -*- coding: utf-8 -*-
# Run this app with `python app.py` and
# visit http://127.0.0.1:8050/ in your web browser.
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import pandas as pd

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
# assume you have a "long-form" data frame
# see https://plotly.com/python/px-arguments/ for more options

df = pd.DataFrame({ 
	"Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"], 
	"Amount": [4, 1, 2, 2, 4, 5], 
	"City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"] })

fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group")

app.layout = html.Div(children=[ 
    html.H1(children='Hello Dash'),
    html.Div(children=''' Dash: A web application framework for Python. '''), 
    dcc.Graph( id='example-graph', figure=fig ) ])
  
if __name__ == '__main__':
    app.run_server(host='0.0.0.0', port=8050, debug=True)

 

 

 

4. App 실행하기

 

위에서 만들어 놓은 app.py를 통해 실행을 통해 잘 만들어져있는지 테스트를 해보자. 아래 코드를 입력하여 실행을 해주면 다음과 같은 메시지를 확인할 수 있다. 이를 확인하기 위해서는 웹 창에 EC2 IP:8050을 입력해주면 된다.

 

 

python3 app.py 

 

 

 

 

 

5. Docker 설치하기

 

Ubuntu에서 다음의 코드를 통해 Docker 설치를 아래코드를 순서대로 입력하자.

 

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce

 

 

이제 아래 코드를 입력하여 Docker를 설치하자. 

 

 

sudo apt install docker-ce

 

설치 확인 방법 (아래 코드 참고)

 

docker -v

 

 

설치가 잘된 것을 확인할 수 있다. 

 

 

 

6. Docker 시작하기

 

sudo service docker start

 

위 코드를 입력하자.

 

 

7. 사용자 추가하기

 

docker에 사용자를 추가하자. 다음의 코드에서 {username} 부분에 넣어주면 된다. 이때 username은 Ubuntu의 계정명이다. 이렇게 계정을 추가해주고 나면 재부팅을 꼭 해주어야 한다.

 

 

sudo usermod -aG docker {username}

sudo usermod -aG docker ubnutu 

 

나는 username이 ubuntu로 되어 있어 위 코드에 ubuntu로 입력하였다.

 

 

8. Dockerfile 생성하기

 

이제 Dash를 실행할 Dockerfile을 만들어주자. touch 명령어로 dockerfile를 만들고 vi편집기로 들어가자.

app.py 를 만들때와 유사하다. Dash 디렉토리 안에 만들어야 한다는 것을 명심하자.

 

 

touch Dockerfile

vi Dockerfile

 

9. requirements.txt 파일 생성하기

 

Docker를 생성시 사용할 python 모듈을 설치 하기 위해 다음과 같이 requirements.txt를 생성 하자. 리눅스에서 freeze를 통해 requirements.txt를 받아오게 되면 시스템 모듈까지 한꺼번에 가져오게 되어 충돌이 생기니 따로 생성해주자.

 

touch명령어로 생성 후, vi 편집기로 들어가서 dash와 pandas만 입력하자. 사용할 모듈이 이 두 개 이기 때문이다.

 

 

touch requirements.txt

vi requirements.txt

 

dash

pandas

 

 

10. Docker 파일 작성하기

 

이제 vi편집기로 dockerfile에 들어와 dash 실행을 위한 코드를 아래와 같이 입력하자. 

 

 

FROM python:3.6.9

COPY ./ ./

RUN pip3 install -r requirements.txt

WORKDIR /

EXPOSE 8050

CMD ["python3", "./app.py"]

 

 

11. Docker 파일 작성하기

 

11.1 Image 생성

 

이제 Docker를 위한 이미지를 생성해보자. 중요한건 Dockerfile이 있는 경로로 간다. (이미지 생성코드 아래 참고)

 

 

docker build -t dash . # 나의 경우 이미지 이름은 dash로 하였다.       

docker build -t {image name} {dockerfile path} # 도커파일의 경로. 이미 dockerfile이 있는 경로에 들어와 있으니 ’.’으로 해둔다.

 

11.2 Image 실행

 

docker 이미지를 생성 했으면 이를 실행 해보자. 이미지 실행 코드는 다음과 같다. (아래 코드 참고)

 

 

docker run -p 8050:8050 {image name} # {image name}은 직전에 만들어두었던 image name이다.

docker run -p 8050:8050 dash  # 이름은 dash로 하였다.       

 

12. 생성된 앱 확인하기

 

 

생성된 앱을 확인 하기 위해서는 앱에 ’{host}:8050’을 입력해주면 된다.

 

 

 

 

위 사진처럼 Dash 앱을 확인할 수 있었다.

 

 

13. container 종료하기

 

쓰다보면 서버를 내려야할 필요가 있다. 그럴땐 다음의 코드를 사용한다. 그럼 다음 사진과같은 메시지가 나오는걸 확인할 수 있다.

 

 

docker container list

 

 

 

 

이제 이곳에서 알아야할 정보가 ‘CONTAINER ID’ 또는 ’NAME’인데 다음의 코드를 통해 컨테이너를 종료 해주자.

 

 

docker container stop {NAME}

docker container stop {CONTAINER ID}

 

 

출처 : 미완성의 신 블로그

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함