mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-23 00:05:09 +00:00
Switches default local setup to PostgreSQL and ARM64 Updates local development environment to use PostgreSQL instead of MariaDB by default, aligns configuration and documentation, and switches Docker service platforms to ARM64 for broader compatibility. Improves developer experience and readiness for ARM-based systems.
216 lines
5.4 KiB
YAML
216 lines
5.4 KiB
YAML
version: '3'
|
|
|
|
services:
|
|
backend:
|
|
image: frappe/erpnext:latest
|
|
networks:
|
|
- frappe_network
|
|
deploy:
|
|
restart_policy:
|
|
condition: on-failure
|
|
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:latest
|
|
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:latest
|
|
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 frontend;
|
|
|
|
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:latest
|
|
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
|
|
volumes:
|
|
- sites:/home/frappe/frappe-bench/sites
|
|
- logs:/home/frappe/frappe-bench/logs
|
|
ports:
|
|
- '8080:8080'
|
|
|
|
queue-long:
|
|
image: frappe/erpnext:latest
|
|
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:latest
|
|
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:latest
|
|
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:latest
|
|
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:
|
|
|
|
networks:
|
|
frappe_network:
|
|
driver: bridge
|