-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
151 lines (145 loc) · 5.13 KB
/
docker-compose.yml
File metadata and controls
151 lines (145 loc) · 5.13 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
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
x-odoo-base: &odoo-base
# TODO: SECURITY WARNING - Never push this image to a registry!
# 1. Contains proprietary Odoo Enterprise source code
# 2. To prevent accidental push: keep image name local (no registry prefix)
# Build already uses BuildKit secrets for addon fetch authentication.
image: ${DOCKER_IMAGE_REFERENCE:-${DOCKER_IMAGE:-odoo-devkit}:${DOCKER_IMAGE_TAG:-latest}}
pull_policy: ${DOCKER_PULL_POLICY:-never}
restart: unless-stopped
env_file:
- path: .env
required: false
x-odoo-env: &odoo-env
ODOO_STACK_NAME: ${ODOO_STACK_NAME:-}
ODOO_PROJECT_NAME: ${ODOO_PROJECT_NAME:-}
ODOO_DB_HOST: database
ODOO_DB_PORT: "5432"
ODOO_DB_NAME: ${ODOO_DB_NAME:?missing}
ODOO_DB_USER: ${ODOO_DB_USER:?missing}
ODOO_DB_PASSWORD: ${ODOO_DB_PASSWORD:?missing}
ODOO_ADMIN_LOGIN: ${ODOO_ADMIN_LOGIN:-}
ODOO_ADMIN_PASSWORD: ${ODOO_ADMIN_PASSWORD:-}
ODOO_DB_MAXCONN: ${ODOO_DB_MAXCONN:-44}
ODOO_MAX_CRON_THREADS: ${ODOO_MAX_CRON_THREADS:-2}
ODOO_WORKERS: ${ODOO_WORKERS:-6}
ODOO_LIMIT_TIME_CPU: ${ODOO_LIMIT_TIME_CPU:-600}
ODOO_LIMIT_TIME_REAL: ${ODOO_LIMIT_TIME_REAL:-1800}
ODOO_LIMIT_TIME_REAL_CRON: ${ODOO_LIMIT_TIME_REAL_CRON:-1800}
ODOO_LIMIT_MEMORY_SOFT: ${ODOO_LIMIT_MEMORY_SOFT:-671088640}
ODOO_LIMIT_MEMORY_HARD: ${ODOO_LIMIT_MEMORY_HARD:-805306368}
ODOO_DEV_MODE: ${ODOO_DEV_MODE:-}
ODOO_INSTALL_MODULES: ${ODOO_INSTALL_MODULES:-}
ODOO_UPDATE_MODULES: ${ODOO_UPDATE_MODULES:-AUTO}
ODOO_ADDONS_PATH: ${ODOO_ADDONS_PATH:-/opt/project/addons,/opt/extra_addons,/opt/enterprise,/odoo/addons}
ODOO_DATA_WORKFLOW_LOCK_FILE: ${ODOO_DATA_WORKFLOW_LOCK_FILE:-/volumes/data/.data_workflow_in_progress}
ODOO_DATA_WORKFLOW_LOCK_TIMEOUT_SECONDS: ${ODOO_DATA_WORKFLOW_LOCK_TIMEOUT_SECONDS:-7200}
IMAGE_ODOO_ENTERPRISE_LOCATION: /volumes/enterprise_disabled
IMAGE_EXTRA_ADDONS_LOCATION: /opt/extra_addons
x-healthcheck-defaults: &healthcheck-defaults
interval: 30s
timeout: 5s
name: ${ODOO_PROJECT_NAME:-odoo}
services:
web:
<<: *odoo-base
command:
- /bin/sh
- -lc
- ${ODOO_WEB_COMMAND:-/odoo/odoo-bin}
volumes:
- odoo_data:/volumes/data
- odoo_logs:/volumes/logs
environment:
<<: *odoo-env
healthcheck:
<<: *healthcheck-defaults
test: >-
curl -fsS http://127.0.0.1:${ODOO_HTTP_PORT:-8069}/web/health || exit 1
retries: 5
start_period: 20s
extra_hosts:
- "host.docker.internal:host-gateway"
database:
# Pin Postgres below 18 until this compose contract migrates away from the
# legacy /var/lib/postgresql/data volume layout used by existing tenant DBs.
image: postgres:17
restart: unless-stopped
ulimits:
nofile:
# noinspection ComposeUnknownValues
soft: ${POSTGRES_ULIMIT_NOFILE_SOFT:-8192}
# noinspection ComposeUnknownValues
hard: ${POSTGRES_ULIMIT_NOFILE_HARD:-8192}
command:
- postgres
- -c
- max_connections=${POSTGRES_MAX_CONNECTIONS:-100}
- -c
- max_files_per_process=${POSTGRES_MAX_FILES_PER_PROCESS:-4096}
- -c
- shared_buffers=${POSTGRES_SHARED_BUFFERS:-1GB}
- -c
- effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4GB}
- -c
- work_mem=${POSTGRES_WORK_MEM:-32MB}
- -c
- maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-256MB}
- -c
- max_wal_size=${POSTGRES_MAX_WAL_SIZE:-1GB}
- -c
- min_wal_size=${POSTGRES_MIN_WAL_SIZE:-80MB}
- -c
- checkpoint_timeout=${POSTGRES_CHECKPOINT_TIMEOUT:-5min}
- -c
- random_page_cost=${POSTGRES_RANDOM_PAGE_COST:-4}
- -c
- effective_io_concurrency=${POSTGRES_EFFECTIVE_IO_CONCURRENCY:-1}
volumes:
- odoo_db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=${ODOO_DB_PASSWORD}
- POSTGRES_USER=${ODOO_DB_USER}
healthcheck:
<<: *healthcheck-defaults
test: >-
pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB -h 127.0.0.1 -p 5432
retries: 5
start_period: 10s
script-runner:
<<: *odoo-base
volumes:
- odoo_data:/volumes/data
- odoo_logs:/volumes/logs
- ${DATA_WORKFLOW_SSH_DIR:-/home/ubuntu/.ssh}:/home/ubuntu/.ssh:ro
- ${DATA_WORKFLOW_SSH_DIR:-/home/ubuntu/.ssh}:/root/.ssh:ro
command: tail -f /dev/null
working_dir: /opt/project
shm_size: "2gb"
healthcheck:
<<: *healthcheck-defaults
test: >-
test -x /odoo/odoo-bin && test -f /volumes/scripts/run_odoo_data_workflows.py
retries: 3
start_period: 10s
environment:
<<: *odoo-env
CHROMIUM_BIN: /usr/bin/chromium
CHROMIUM_FLAGS: >-
--headless=new --no-sandbox --disable-gpu --disable-dev-shm-usage
--disable-software-rasterizer --window-size=1920,1080 --no-first-run
--no-default-browser-check
--disable-features=TranslateUI,site-per-process,IsolateOrigins,BlockInsecurePrivateNetworkRequests
volumes:
odoo_data:
name: ${ODOO_DATA_VOLUME:?missing}
odoo_logs:
name: ${ODOO_LOG_VOLUME:?missing}
odoo_db:
name: ${ODOO_DB_VOLUME:?missing}
testkit_db:
testkit_data:
testkit_logs:
secrets:
github_token:
environment: GITHUB_TOKEN