-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
115 lines (110 loc) · 3.5 KB
/
docker-compose.yml
File metadata and controls
115 lines (110 loc) · 3.5 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
# Docker Compose for OpenCart 3 (OcStore) - Optimized for Coolify
# Deploy via Coolify from private GitHub repository
# For OcStore 2.3, use docker-compose.v2.yml instead
services:
# OpenCart Application (PHP-FPM + Nginx)
opencart:
build:
context: .
dockerfile: Dockerfile
environment:
- DB_HOST=mariadb
- DB_PORT=3306
- DB_DATABASE=${DB_DATABASE:-opencart}
- DB_USERNAME=${DB_USERNAME:-opencart}
- DB_PASSWORD=${DB_PASSWORD}
- DB_PREFIX=${DB_PREFIX:-oc_}
- OPENCART_URL=${OPENCART_URL:-http://localhost}
- ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin123}
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
# ionCube disabled by default for JIT performance
# Set to 1 only if you need ionCube-encoded modules (disables JIT)
- IONCUBE_ENABLED=${IONCUBE_ENABLED:-0}
# Xdebug disabled by default for JIT performance
# Set to 1 for development debugging (disables JIT)
- XDEBUG_ENABLED=${XDEBUG_ENABLED:-0}
volumes:
- opencart_storage:/var/www/storage
- opencart_html:/var/www/html
depends_on:
mariadb:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/"]
interval: 30s
timeout: 10s
retries: 5
start_period: 300s
labels:
- "traefik.enable=true"
- "traefik.http.services.opencart.loadbalancer.server.port=80"
# MariaDB Database
mariadb:
image: mariadb:10.6
hostname: mariadb
ports:
- "${DB_EXTERNAL_PORT:-3306}:3306" # External access (set DB_EXTERNAL_PORT in .env)
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE:-opencart}
- MYSQL_USER=${DB_USERNAME:-opencart}
- MYSQL_PASSWORD=${DB_PASSWORD}
- MARIADB_AUTO_UPGRADE=1
volumes:
- mariadb_data:/var/lib/mysql
- ./docker/mariadb/my.cnf:/etc/mysql/conf.d/custom.cnf:ro
restart: unless-stopped
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
# Internal service - not exposed to internet
# FileBrowser (Web File Manager)
# Login: admin / password from logs (randomly generated on first start)
# Using hurlenko/filebrowser - supports env vars configuration
filebrowser:
image: hurlenko/filebrowser
user: "33:33" # www-data - files will have correct permissions for PHP
volumes:
- opencart_html:/data/html
- opencart_storage:/data/storage
- filebrowser_data:/config
restart: unless-stopped
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "8080"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.services.filebrowser.loadbalancer.server.port=8080"
# phpMyAdmin (Database Management)
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
environment:
- PMA_HOST=mariadb
- PMA_PORT=3306
- UPLOAD_LIMIT=100M
- MEMORY_LIMIT=512M
- MAX_EXECUTION_TIME=600
depends_on:
mariadb:
condition: service_healthy
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.phpmyadmin.loadbalancer.server.port=80"
volumes:
opencart_storage:
driver: local
opencart_html:
driver: local
mariadb_data:
driver: local
filebrowser_data:
driver: local