· 7 years ago · Apr 19, 2018, 02:42 PM
1version: '2'
2services:
3
4 nginx:
5 image: nginx:latest
6 ports:
7 - '80:80'
8 - '443:443'
9 volumes:
10 - ./src/app/static:/flask-app/src/app/static
11 - ./conf.d:/etc/nginx/conf.d/
12 - ./logs/nginx_access.log:/var/log/nginx_access.log
13 - ./logs/nginx_error.log:/var/log/nginx_error.log
14 depends_on:
15 - web
16
17 web:
18 build: ./
19 command: gunicorn manage:app --bind 0.0.0.0:8000 --access-logfile=logs/gunicorn_access_log.txt
20 ports:
21 - '8000:8000'
22 volumes:
23 - ./:/flask-app
24 environment:
25 DATABASE_URL: postgresql://postgres:pass@localhost/flask_deploy
26 REDIS_HOST: redis
27 SECRET_KEY: 'BbGd3qe$dsf1'
28 CONFIG_NAME: 'prod'
29 links:
30 - postgres:postgres
31 - redis:redis
32 depends_on:
33 - postgres
34 - redis
35
36 postgres:
37 image: postgres:9.4
38 volumes:
39 - ./psql-data:/var/lib/postgresql/data
40 environment:
41 POSTGRES_PASSWORD: 'pass'
42 POSTGRES_DB: 'flask_deploy'
43 ports:
44 - '5432:5432'
45
46 redis:
47 image: "redis:3.0-alpine"
48 command: redis-server
49 ports:
50 - '6379:6379'
51
52FROM python:3
53#RUN apt-get install libpq-dev python-dev
54RUN mkdir /flask-app
55WORKDIR /flask-app
56# Добавим файл Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚Ñми в рабочий каталог контейнера
57ADD requirements.txt /flask-app
58RUN pip install -r requirements.txt
59# Добавим Ñодержимое папки src хоÑта в src папку контейнера
60ADD . /flask-app
61
62server {
63 listen 80;
64 server_name localhost;
65
66 root /flask-app/src/app;
67
68 # запиÑÑŒ доÑтупа и журналы ошибок в /var/log
69 access_log /var/log/nginx_access.log;
70 error_log /var/log/nginx_error.log;
71
72 location / {
73 # переадреÑÐ°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов приложений на Ñервер gunicorn
74 proxy_pass http://web:8000;
75 }
76
77 location /static {
78 # обрабатывать ÑтатичеÑкие файлы напрÑмую, без переÑылки в приложение
79 autoindex on;
80 expires 1d;
81 }
82}
83
84http://web:8000/static/img/do.jpg
85
86http://127.0.0.1:8000/static/img/do.jpg
87
88proxy_set_header Host $host:8000;
89
90server {
91 listen 80;
92 server_name localhost;
93
94 root /flask-app/src/app;
95
96 access_log /var/log/nginx_access.log;
97 error_log /var/log/nginx_error.log;
98
99 location / {
100 proxy_set_header Host $host:8000;
101 proxy_pass http://web:8000;
102 }
103
104 location /static {
105 autoindex on;
106 expires 1d;
107 }
108}