Open heojae opened 3 years ago
대주제 : 도커를 통해서, 이때까지 만들어 왔던 것들을 도커라이즈화 하면서 구현하고 싶다. 소주제 : Backend 와 Frontend 부분을 Docker 로 컨테이너화를 하고 싶고, 그에 대한 구상을 정리하고 싶다.
대주제 : 도커를 통해서, 이때까지 만들어 왔던 것들을 도커라이즈화 하면서 구현하고 싶다.
소주제 : Backend 와 Frontend 부분을 Docker 로 컨테이너화를 하고 싶고, 그에 대한 구상을 정리하고 싶다.
Backend
Frontend
Docker
우선, backend, frontend, deeplearning, proto 모두, release-0.1 버젼까지는 구현을 완료한 상태입니다.
backend
frontend
deeplearning
proto
release-0.1
backend 와 frontend 이 두가지를 대상으로 컨테이너화를 할 예정입니다.
결과로 나온 이슈 : https://github.com/heojae/FoodImageRotationAdmin/issues/43#issuecomment-791501187
서버를 실행 시키기 위해서, 켜야 하는게 너무 많다.
전체적으로, 서버를 실행을 시키기 위해서는 user, model version, dl, dataset, media(static) , redis 등
user
model version
dl
dataset
media(static)
redis
총 6개의 서버를 켜서 작업을 해왔는데, 이를 docker-compose를 통해서, 효율화를 해줄 필요가 있다.
docker-compose
DB 를 sql lite 에서, mysql 로 각각의 DB 를 만들어줄 필요가 있다.
DB
sql lite
mysql
현재, 개발용으로 간편하게 바로 고치기 위해서, sql alchemy 와 sql lite3 로 DB 를 구현하였지만,
sql alchemy
sql lite3
이제는 각각의 port 번호를 매핑을 하여, 각각의 mysql 을 구현해줄 필요가 있다.
port
build 된 파일들을 전송해줄 필요가 있다.
npm run build 를 통해서, 생성된 파일들을 보내주어야 하는데,
npm run build
python3 -m http.server 3000 을 통해서, 단순하게 보낼수는 있겠지만,
python3 -m http.server 3000
nginx 를 통해서, 이를 구현해두고 싶다.
nginx
proto 파일들을 생성한 상태에서 올린다.
user, model version, dl, dataset 서버들에서도,
proto 파일들을 생성할 때, app.py에서, import absolute_path 가 맞지 않으므로, proto 파일들을 생성하고,
app.py
import absolute_path
import 경로까지 완벽하게 맞게 설정되었다고 생각하고 접근한다.
import 경로
각각의 DB 를 생성한다.
uesr -> /mysql Docker file 연결
uesr
/mysql
model version -> /mysql Dockerfile 연결
dataset-> /mysql
static 파일 serve
static
dataset-> nginx(static file serving)
nginx(static file serving)
redis 서버
user -> redis-server 를 구현해야한다.
redis-server
아래 처럼 서로 연동될 수 있도록, 설정을 하고 진행한다. 기존의 설정과 거의 차이가 안나는 형태로 진행하여, 간단하게
settings = DockerSettings() or DevSettings() 을 바꾸는 정도에서 간편하게 선택할 수 있도록 한다.
settings = DockerSettings() or DevSettings()
class DockerSettings(BaseSettings): env: str = "prod" user_api_listen_port: str = "[::]:50051" dl_api_listen_port: str = "[::]:50052" model_version_api_listen_port: str = "[::]:50053" dataset_api_listen_port: str = "[::]:50054" media_server_listen_port: str = "[::]:50050" user_api_listen_addr: str = "api-user:50051" dl_api_listen_addr: str = "api-dl:50052" model_version_api_listen_addr: str = "api-model_version:50053" dataset_api_listen_addr: str = "api-dataset:50054" media_server_listen_addr: str = "nginx-media" user_db_end_point: str = "mysql://root:fira_user_password@mysql-user/fira_user" model_version_db_end_point: str = "mysql://root:fira_model_version_password@mysql-model_version/fira_model_version" dataset_db_end_point: str = "mysql://root:fira_dataset_password@mysql-dataset/fira_dataset" redis_end_point: str = "redis://redis-server:6379/0?encoding=utf-8" token_header: str = "access_token" access_token: str = "f9e4a020-6bfd-11eb-8572-0800200c9a66" # api_user 에만 필요한 정보 admin_email: str = "admin@naver.com" admin_password: str = "1234" admin_profile_image: str = "admin/profile.jpg"
npm run build 를 기반으로 생성된, 파일들을 nginx 를 통해서, 전달되는 형태로 구현할 예정입니다.
현재 상황
우선,
backend
,frontend
,deeplearning
,proto
모두,release-0.1
버젼까지는 구현을 완료한 상태입니다.backend
와frontend
이 두가지를 대상으로 컨테이너화를 할 예정입니다.현재 상황 - Backend
서버를 실행 시키기 위해서, 켜야 하는게 너무 많다.
전체적으로, 서버를 실행을 시키기 위해서는
user
,model version
,dl
,dataset
,media(static)
,redis
등총 6개의 서버를 켜서 작업을 해왔는데, 이를
docker-compose
를 통해서, 효율화를 해줄 필요가 있다.DB
를sql lite
에서,mysql
로 각각의DB
를 만들어줄 필요가 있다.현재, 개발용으로 간편하게 바로 고치기 위해서,
sql alchemy
와sql lite3
로DB
를 구현하였지만,이제는 각각의
port
번호를 매핑을 하여, 각각의mysql
을 구현해줄 필요가 있다.현재 상황 - Frontend
build 된 파일들을 전송해줄 필요가 있다.
npm run build
를 통해서, 생성된 파일들을 보내주어야 하는데,python3 -m http.server 3000
을 통해서, 단순하게 보낼수는 있겠지만,nginx
를 통해서, 이를 구현해두고 싶다.앞으로의 구현 예상도 - Backend
proto
파일들을 생성한 상태에서 올린다.user
,model version
,dl
,dataset
서버들에서도,proto
파일들을 생성할 때,app.py
에서,import absolute_path
가 맞지 않으므로,proto
파일들을 생성하고,import 경로
까지 완벽하게 맞게 설정되었다고 생각하고 접근한다.각각의 DB 를 생성한다.
uesr
->/mysql
Docker file 연결model version
->/mysql
Dockerfile 연결dataset
->/mysql
static
파일 servedataset
->nginx(static file serving)
redis
서버user
->redis-server
를 구현해야한다.전체적인 Docker Config 설정
아래 처럼 서로 연동될 수 있도록, 설정을 하고 진행한다. 기존의 설정과 거의 차이가 안나는 형태로 진행하여, 간단하게
settings = DockerSettings() or DevSettings()
을 바꾸는 정도에서 간편하게 선택할 수 있도록 한다.앞으로의 구현 예상도 - Frontend
npm run build
를 기반으로 생성된, 파일들을nginx
를 통해서, 전달되는 형태로 구현할 예정입니다.