INDEX



이번 포스트는 macOS Mojave 10.14.5 에서 수행된 작업입니다.

개발 환경

  • MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
  • Python 3.7
  • vscode
  • Docker-Compose version 1.23.2, build 1110ad01



Manager 사용하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ./app/__init__.py

"""
APP을 실행하기 위해 config file
"""

from flask import Flask

def create_app()->(Flask):
""" create_app()을 호출하여 app을 초기화 """
app = Flask(__name__)
app.app_context().push()

@app.route('/')
def root():
""" main page """
return "Hello World!"

return app



Flask-Script 종속성을 설치합니다

1
$ pipenv install Flask-Script



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
# ./manage.py

"""
APP manage file
"""

from flask_script import Manager
from app import create_app # app/__init__.py의 create_app() 함수 사용

APP = create_app()

MANAGER = Manager(APP)

@MANAGER.command
def run():
""" Command Application run """
APP.run()

@MANAGER.command
def out():
""" test command out method """
return "Test command"

if __name__ == '__main__':
MANAGER.run()



작성해 놓은 커맨드를 한번 확인해 볼까요?

1
2
3
4
5
6
7
8
9
10
11
12
13
$ python manage.py
usage: manage.py [-?] {run,out,shell,runserver} ...

positional arguments:
{run,out,shell,runserver}
run Command Application run
out test command out method
shell Runs a Python shell inside Flask application context.
runserver Runs the Flask development server i.e. app.run()
# def out(), def run()에 대한 커맨드가 생긴 것을 볼 수 있습니다!

optional arguments:
-?, --help show this help message and exit



이제 실행을 다시 해볼까요?

1
2
3
4
5
6
7
$ python manage.py run
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on <http://127.0.0.1:5000/$ (Press CTRL+C to quit)



MySQL 사용하기 위한 작업

Docker가 필요한 시점입니다 Docker를 설치해주세요
Docker 설치 관련 포스트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ./docker-compose.yml 생성

version: '3'
services: # 쓰고자하는 서비스
mysql: # 사용자가 원하는 이름
image: mysql:5.7 # 이미지는 mysql 5.7을 다운받아 사용할 것
hostname: mysql
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always # 시스템을 다시 껐다 켜도 항상 재시작
ports:
- "3306:3306" # 23306 포트로 접속하면 내부에서 3306포트로 전송
env_file:
- ./confs/database/mysql/.env # 환경 변수들을 따로 지정해줘도 되지만 파일로 떼어놓음
volumes:
- mysql:/var/lib/mysql # docker 접속후 이 위치로 마운트(destination)
volumes:
mysql:



MySQL 환경 변수를 작성 하겠습니다

1
2
3
4
5
6
# ./confs/database/mysql/.env 생성

MYSQL_DATABASE_USERNAME=[데이터 베이스 사용자 이름]
MYSQL_ROOT_PASSWORD=[데이터 베이스 루트 비밀 번호]
MYSQL_DATABASE=[생성할 데이터베이스 이름]
MYSQL_PORT=3306



Docker로 MySQL 생성하고 접속하기

docker-compose.yml 위치가 있는 곳에서 다음 명령어를 실행합니다

1
2
$ docker-compose up -d
Creating mysql ... done

done 이라는 단어가 보인다면 성공적으로 MySQL Conatainer를 생성한 것입니다
만약 실패했다면 3306 포트가 사용중이 아닌지 확인해 주세요!(또는 댓글로 알려주세요)


MySQL WorkBench를 이용해서 접속하기

Successfully made the MySQL connection 뜬다면 접속 성공!


생성된 데이터베이스에 접속해보면 다음과 같은 화면을 볼수 있습니다



INDEX