mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-19 14:45:10 +00:00
251 lines
6.8 KiB
YAML
251 lines
6.8 KiB
YAML
version: "3"
|
||
|
||
services:
|
||
traefik:
|
||
image: traefik:v2.11
|
||
container_name: traefik
|
||
command:
|
||
- "--api.dashboard=true"
|
||
- "--api.insecure=true"
|
||
- "--providers.docker=true"
|
||
- "--providers.docker.exposedbydefault=false"
|
||
- "--entrypoints.web.address=:80"
|
||
- "--entrypoints.websecure.address=:443"
|
||
- "--certificatesresolvers.myresolver.acme.httpchallenge=true"
|
||
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
|
||
- "--certificatesresolvers.myresolver.acme.email=nastiar.dev@gmail.com"
|
||
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||
ports:
|
||
- "80:80"
|
||
- "443:443"
|
||
- "8081:8080" # optional: dashboard access
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||
- traefik-letsencrypt:/letsencrypt
|
||
networks:
|
||
- frappe_network
|
||
restart: unless-stopped
|
||
|
||
backend:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
extra_hosts:
|
||
- "erp-sb1.mitrabisnisdigital.com:host-gateway"
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
environment:
|
||
DB_HOST: db
|
||
DB_PORT: "3306"
|
||
MYSQL_ROOT_PASSWORD: admin
|
||
MARIADB_ROOT_PASSWORD: admin
|
||
|
||
configurator:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: none
|
||
entrypoint:
|
||
- bash
|
||
- -c
|
||
command:
|
||
- >
|
||
ls -1 apps > sites/apps.txt;
|
||
bench set-config -g db_host $$DB_HOST;
|
||
bench set-config -gp db_port $$DB_PORT;
|
||
bench set-config -g redis_cache "redis://$$REDIS_CACHE";
|
||
bench set-config -g redis_queue "redis://$$REDIS_QUEUE";
|
||
bench set-config -g redis_socketio "redis://$$REDIS_QUEUE";
|
||
bench set-config -gp socketio_port $$SOCKETIO_PORT;
|
||
environment:
|
||
DB_HOST: db
|
||
DB_PORT: "3306"
|
||
REDIS_CACHE: redis-cache:6379
|
||
REDIS_QUEUE: redis-queue:6379
|
||
SOCKETIO_PORT: "9000"
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
|
||
create-site:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: none
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
entrypoint:
|
||
- bash
|
||
- -c
|
||
command:
|
||
- >
|
||
wait-for-it -t 120 db:3306;
|
||
wait-for-it -t 120 redis-cache:6379;
|
||
wait-for-it -t 120 redis-queue:6379;
|
||
export start=`date +%s`;
|
||
until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \
|
||
[[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \
|
||
[[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_queue // empty"` ]];
|
||
do
|
||
echo "Waiting for sites/common_site_config.json to be created";
|
||
sleep 5;
|
||
if (( `date +%s`-start > 120 )); then
|
||
echo "could not find sites/common_site_config.json with required keys";
|
||
exit 1
|
||
fi
|
||
done;
|
||
echo "sites/common_site_config.json found";
|
||
bench new-site --mariadb-user-host-login-scope='%' --admin-password=admin --db-root-username=root --db-root-password=admin --install-app erpnext --set-default erp-sb1.mitrabisnisdigital.com;
|
||
**bench --site erp-sb1.mitrabisnisdigital.com set-config host_name http://erp-sb1.mitrabisnisdigital.com;**
|
||
|
||
db:
|
||
image: mariadb:10.6
|
||
networks:
|
||
- frappe_network
|
||
healthcheck:
|
||
test: mysqladmin ping -h localhost --password=admin
|
||
interval: 1s
|
||
retries: 20
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
command:
|
||
- --character-set-server=utf8mb4
|
||
- --collation-server=utf8mb4_unicode_ci
|
||
- --skip-character-set-client-handshake
|
||
- --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: admin
|
||
MARIADB_ROOT_PASSWORD: admin
|
||
volumes:
|
||
- db-data:/var/lib/mysql
|
||
|
||
frontend:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
depends_on:
|
||
- websocket
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
command:
|
||
- nginx-entrypoint.sh
|
||
environment:
|
||
BACKEND: backend:8000
|
||
FRAPPE_SITE_NAME_HEADER: frontend
|
||
SOCKETIO: websocket:9000
|
||
UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
|
||
UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
|
||
UPSTREAM_REAL_IP_RECURSIVE: "off"
|
||
PROXY_READ_TIMEOUT: 120
|
||
CLIENT_MAX_BODY_SIZE: 50m
|
||
labels:
|
||
- "traefik.enable=true"
|
||
- "traefik.http.routers.erp.rule=Host(`erp-sb1.mitrabisnisdigital.com`)"
|
||
- "traefik.http.routers.erp.entrypoints=websecure"
|
||
- "traefik.http.routers.erp.tls.certresolver=myresolver"
|
||
- "traefik.http.services.erp.loadbalancer.server.port=8080"
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
ports:
|
||
- "8080:8080"
|
||
|
||
queue-long:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
command:
|
||
- bench
|
||
- worker
|
||
- --queue
|
||
- long,default,short
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
|
||
queue-short:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
command:
|
||
- bench
|
||
- worker
|
||
- --queue
|
||
- short,default
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
|
||
redis-queue:
|
||
image: redis:6.2-alpine
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
volumes:
|
||
- redis-queue-data:/data
|
||
|
||
redis-cache:
|
||
image: redis:6.2-alpine
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
|
||
scheduler:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
command:
|
||
- bench
|
||
- schedule
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
|
||
websocket:
|
||
image: frappe/erpnext:v15.74.0
|
||
networks:
|
||
- frappe_network
|
||
deploy:
|
||
restart_policy:
|
||
condition: on-failure
|
||
command:
|
||
- node
|
||
- /home/frappe/frappe-bench/apps/frappe/socketio.js
|
||
volumes:
|
||
- sites:/home/frappe/frappe-bench/sites
|
||
- logs:/home/frappe/frappe-bench/logs
|
||
|
||
volumes:
|
||
db-data:
|
||
redis-queue-data:
|
||
sites:
|
||
logs:
|
||
traefik-letsencrypt:
|
||
|
||
networks:
|
||
frappe_network:
|
||
driver: bridge
|