-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdocker-compose.yml
136 lines (126 loc) · 4.27 KB
/
docker-compose.yml
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# 도커파일은 빌드할때 반영
# 도커컴포즈는 업할때 반영
version: "3"
services:
frontend:
build:
# context : 현재 폴더의 frontend 폴더에 있는 도커파일을 쓰겠다.
context: ./frontend
# command : 컨테이너가 띄워질 때 실행하는 명령어 / 서버실행
command: [ "npm", "start" ]
restart: always
ports:
# 왼쪽이 도커 바깥(외부에서 접근할 포트번호) / 오른쪽이 도커 내부(컨테이너 내부)
- 3000:3000
# 가상 네트워크 연결
networks:
- tts
volumes:
# 왼쪽이 우리 컴퓨터, 오른쪽이 도커 컨테이너
# 리눅스 컨테이너의 프론트엔드 폴더에 우리 컴퓨터의 프론트엔드 폴더를 공유하겠다.
# 서로 바뀐 부분 적용됨
- ./frontend/:/frontend
- ./frontend/node_modules/:/frontend/node_modules
environment:
- CI=true
- CHOKIDAR_USEPOLLING=true
- REACT_APP_BACKEND_URL=http://localhost:5000
tty: true
apiserver:
build:
# context : 현재 폴더의 backend 폴더에 있는 도커파일을 쓰겠다.
context: ./backend/apiserver
args:
DJANGO_ALLOWED_HOSTS: "*"
DJANGO_SECRET_KEY: "*"
DJANGO_CORS_ORIGIN_WHITELIST: "*"
# command : 컨테이너가 띄워질 때 실행하는 명령어 / 서버실행
command: sh -c "/wait && python ./apiserver/manage.py makemigrations && python ./apiserver/manage.py makemigrations mainApp && python ./apiserver/manage.py migrate && python ./apiserver/db_init.py && python ./apiserver/model_init.py && python ./apiserver/manage.py runserver 0.0.0.0:8000"
# restart : 실패하면 재시작
restart: on-failure
ports:
# 왼쪽이 도커 바깥(외부에서 접근할 포트번호) / 오른쪽이 도커 내부(컨테이너 내부)
- 8000:8000
volumes:
# 왼쪽이 우리 컴퓨터, 오른쪽이 도커 컨테이너
# 리눅스 컨테이너의 백엔드 폴더에 우리 컴퓨터의 백엔드 폴더를 공유하겠다.
# 서로 바뀐 부분 적용됨
- ./backend:/backend
# 가상 네트워크 연결
networks:
- tts
# 이걸해야 db뜨고 백엔드가 실행됨
depends_on:
- ttsmysql
ttsmysql:
image: mysql
command: --lower_case_table_names=1
container_name: ttsmysql # 컨테이너 이름 설정
ports:
- "3306:3306"
environment: # -e 옵션
- MYSQL_DATABASE=tts
- MYSQL_ROOT_PASSWORD=1234 # MYSQL 패스워드 설정 옵션
- TZ=Asia/Seoul
# 가상 네트워크 연결
networks:
- tts
modelserver:
platform: linux/amd64
build: ./backend/modelserver
# dockerfile: Dockerfile
# 컨테이너를 stop 시키기 전까지 항상 재시작
ports:
- 5000:5000
restart: unless-stopped
# 환경변수 파일로 지정 - 아직 파일 안만들어서 주석처리함.
# env_file:
# - ./settings/.env
# depends_on:
# - rabbit
# 가상 네트워크 연결
networks:
- tts
environment:
- FLASK_APP=app
- FLASK_ENV=development
command: flask run --host=0.0.0.0
volumes:
- ./backend:/backend
rabbit:
hostname: tts_host
image: rabbitmq:3-management
command: rabbitmq-server
#컨테이너를 stop 시키기 전까지 항상 재시작
restart: unless-stopped
# 환경변수 설정 - 설정하면 접속이 안되서 주석처리.
environment:
- RABBITMQ_DEFAULT_USER=tts
- RABBITMQ_DEFAULT_PASS=tts123
- RABBITMQ_DEFAULT_VHOST=tts_host
ports:
- 5672:5672 # 이 포트로는 접속 안됨. 나중에 더 알아보고 추가할 예정
- 15672:15672 # 이 포트로 접근해서 guest/guest 입력
volumes:
- ./backend:/var/lib/rabbitmq
# 가상 네트워크 연결
networks:
- tts
depends_on:
- modelserver
celery:
platform: linux/amd64
build: ./backend/modelserver
restart: unless-stopped
depends_on:
- "apiserver"
- "rabbit"
- "modelserver"
networks:
- tts
command: ["celery","-A", "celery_app", "worker", "--loglevel=info"]
volumes:
- ./backend:/backend
networks:
tts:
driver: bridge