-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
66 lines (62 loc) · 3.58 KB
/
docker-compose.yaml
File metadata and controls
66 lines (62 loc) · 3.58 KB
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
# Файл конфигурации - контейнеры с nginx последней версии и couchdb версии 1.7.2
# Указание версии нужно для старых версий docker
## version: '3.8'
# Описание всех частей приложения, которые будут запускаться в контейнерах
services:
# nginx
nginx:
# Образ контейнера nginx
image: nginx:latest
# Используемые порты. Первый - внешний сервера, второй - внутренний контейнера
# Nginx - это http веб-сервер, поэтому использую стандартный http порт
ports:
- '80:80'
# Установка своей конфигурации. Также позволит редактировать конфигурацию без пересоздания контейнера
# В файле nginx.conf укажу перенаправление с 80 порта на порт субд 5984
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
# Указание nginx ожидать запуска couchdb
depends_on:
couchdb:
condition: service_healthy
# couchdb
couchdb:
# Образ контейнера СУБД
image: couchdb:1.7.2
# Используемые порты. В тз указано использовать 5984->5984
ports:
- '5984:5984'
# Установка переменных окружения для определения параметров входа в СУБД
environment:
# Все нужные переменные описаны на странице докер образа
# Имя пользователя
- COUCHDB_USER=${COUCHDB_ADMIN_USER}
# Пароль хранить в файле конфигурации - идея плохая
## , поэтому его получу через внешнюю переменную окружения
## Установить пароль можно с помощью аргумента при запуске docker compose
## , или создав файл переменных окружения
## - "export COUCHDB_ADMIN_PASSWORD=4321"
- COUCHDB_PASSWORD=${COUCHDB_ADMIN_PASSWORD}
# Ограничение на занимаемое СУБД место
mem_limit: 512m
ulimits:
nofile:
soft: 65536
hard: 65536
# nginx будет обращаться к couchdb.
## Возможен вариант, когда база данных еще не будет запущена, а nginx уже будет слать запросы.
## Это вызовет ошибку, поэтому надо предусмотреть проверку работоспособности субд
healthcheck:
# Команда на проверку работоспособности базы
test: ['CMD', 'curl', '-f', 'http://localhost:5984/']
# Указание как часто выполнять проверку - раз в 5 секунд
interval: 5s
# Максимальное время ожидания команды test - 3 секунды
timeout: 3s
# Количество попыток проверки - 5 раз
retries: 5
# Указание томов данных. Чтобы данные не хранились в контейнере и не терялись при пересоздании
volumes:
- couchdb_data:/opt/couchdb/data
volumes:
couchdb_data: