Skip to content
/ askhy Public

A simple web application implemented with Flask and MySQL, and packaged with Docker

License

Notifications You must be signed in to change notification settings

Prev/askhy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ASKHY [부탁하냥]

Docker Automated build

Flask와 MySQL을 이용하고 docker를 이용해서 패키징 한 너무너무 간단한 웹 어플리케이션

Screenshot

How to run

MySQL 컨테이너가 없다면 다음 명령어를 먼저 실행해야 합니다.
(비밀번호나 컨테이너 이름 등은 취향껏 수정하되 아래 askhy 컨테이너 실행시 알맞게 설정해주어야 합니다)

docker run -d \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=askhy \
  --name mysql \
  mysql:5.7

그 뒤에 이 명령어를 통해 해당 어플리케이션의 이미지를 다운로드하고 컨테이너를 실행합니다.

docker run -p 8080:80 \
  --link mysql:mysql_host \
  -e DATABASE_HOST=mysql_host \
  -e DATABASE_USER=root \
  -e DATABASE_PASS=root \
  -e DATABASE_NAME=askhy \
  --name askhy \
  prev/askhy

다음에 웹 브라우저를 열고 localhost:8080 에 접속하면 어플리케이션이 실행됩니다!

Database Scheme

서비스 컨셉은 기본적인 게시판과 비슷하지만 게시글을 부탁이라는 이름으로 쓰며, 댓글을 응원이라는 이름을 사용합니다. MySQL 스키마는 아래와 같습니다.

DB Scheme

Pages

  • GET /: 메인 화면. 전체 부탁과 부탁 별 응원 수를 볼 수 있습니다.
  • GET /ask/{$ask_id}: 하나의 부탁에 대한 자세한 정보가 보여진다. 해당 부탁에 대한 모든 응원을 볼 수 있습니다.
  • POST /ask: 새로운 부탁을 등록하는 페이지 입니다.
  • POST /ask/{$ask_id}/cheer: 특정 부탁에 새로운 응원을 등록하는 페이지 입니다.

Structure

.
├── Dockerfile 					이미지 빌드용 스크립트
├── LICENSE 					라이선스
├── README.md
├── app
│   ├── core					앱 내부 코드
│   │   └── dbdriver.py	 			데이터베이스(MYSQL) 연결 및 초기화용 드라이버
│   ├── main.py					URL route와 템플릿을 렌더링하는 메인 코드
│   ├── static					프론트엔드 정적 파일 
│   │   ├── css
│   │   │   ├── detail.css			'부탁 상세보기'용 CSS
│   │   │   ├── main.css			'메인'용 CSS
│   │   │   └── stylesheet.css			공통 CSS
│   │   ├── favicon.ico
│   │   └── images
│   │       ├── add.png				
│   │       ├── cheer.png
│   │       ├── logo.png
│   │       └── quotation_bg.png
│   └── templates
│       ├── _layout.html			사이트 공통 템플릿
│       ├── detail.html				'부탁 상세보기'용 템플릿
│       └── main.html				'메인'용 CSS
├── docs
└── requirements.txt				Python Pacakage Dependency

Branches

ASKHY에 기능을 추가하거나 변형 한 버전들이 존재합니다. 각각은 branch를 통해 관리되고 있습니다.

Branch 설명
master MySQL을 사용하는 기본 웹 어플리케이션
arcus-combined arcus 를 이용하여 주요 쿼리를 cache하여 성능 개선을 한 버전
redis-combined redis 를 이용하여 주요 쿼리를 cache하여 성능 개선을 한 버전
1.1 부탁응원 수에 추가적으로 하나의 IP 당 하나의 응원으로만 카운팅 한
순수 응원 수라는 지표도 함께 보여주는 어플리케이션
1.1-arcus-combined 1.1의 기능에 arcus로 성능 개선을 한 버전
1.1-redis-combined 1.1의 기능에 redis로 성능 개선을 한 버전

External Libraries

About

A simple web application implemented with Flask and MySQL, and packaged with Docker

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages