Hi Everyone,
Do u know how to transfer customisation from one container to another
I did install hrms on docker and it now works absolutely fine,
this is the docker-compose.yml file
version: “3”
services:
backend:
image: frappe/erpnext:v15.19.1
deploy:
restart_policy:
condition: on-failure
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logsconfigurator:
image: frappe/erpnext:v15.19.1
deploy:
restart_policy:
condition: none
entrypoint:
- bash
- -c
# add redis_socketio for backward compatibility
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/logscreate-site:
image: frappe/erpnext:v15.19.1
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 [[ -ngrep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"
]] &&
[[ -ngrep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"
]] &&
[[ -ngrep -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 --no-mariadb-socket --admin-password=admin --db-root-password=admin --install-app erpnext --set-default site.local;db:
image: mariadb:10.6
healthcheck:
test: mysqladmin ping -h localhost --password=admin
interval: 1s
retries: 15
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
volumes:
- db-data:/var/lib/mysqlfrontend:
image: frappe/erpnext:v15.19.1
depends_on:
- websocket
deploy:
restart_policy:
condition: on-failure
command:
- nginx-entrypoint.sh
environment:
BACKEND: backend:8000
FRAPPE_SITE_NAME_HEADER: site.local
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:v15.19.1
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/logsqueue-short:
image: frappe/erpnext:v15.19.1
deploy:
restart_policy:
condition: on-failure
command:
- bench
- worker
- --queue
- short,default
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logsredis-queue:
image: redis:6.2-alpine
deploy:
restart_policy:
condition: on-failure
volumes:
- redis-queue-data:/dataredis-cache:
image: redis:6.2-alpine
deploy:
restart_policy:
condition: on-failure
volumes:
- redis-cache-data:/datascheduler:
image: frappe/erpnext:v15.19.1
deploy:
restart_policy:
condition: on-failure
command:
- bench
- schedule
volumes:
- sites:/home/frappe/frappe-bench/sites
- logs:/home/frappe/frappe-bench/logswebsocket:
image: frappe/erpnext:v15.19.1
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/logsvolumes:
db-data:
redis-queue-data:
redis-cache-data:
sites:
logs:
and did customizations in it( Added doctypes, customised existing doctypes, added API end points)
I wanted to export all these changes to a new system so i commited the docker image and did push it to dockerhub, when i pulled the images and ran the same yml file in which the image reference i changed into my images
This was the thing i found out from this FAQ
How to update?
Change the image tag for all the frappe framework services, take down all the containers and start them again with new images. Once the containers are running you’ll need to migrate sites with bench --site all migrate
command. The image and container replacement is done as per the container orchestrator.
But when i do this I dont get the customistaions refelect in the new container
Im i doing things wrong or is there any other step I didnt do, because of which im not getting the updates,
I didnt do mounts or didnt touch any volumes, I did refer to docker official documentations and found out that the customistaions in my container will be stored in those voulmes, here in my case its not being used so, i guess thats the problem but now I dont know to do this export and import business in ERPnext
Im new to Frappe and Docker Please help me!!