mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-17 13:55:08 +00:00
162 lines
No EOL
4.1 KiB
Bash
162 lines
No EOL
4.1 KiB
Bash
#!/bin/bash
|
|
|
|
function usage {
|
|
echo "Usage: dbench [ --setup [-d] | --init [-med] [sitename] | "
|
|
echo ''
|
|
echo 'where:'
|
|
echo ' -h show this help text'
|
|
echo ' -c command send a command to bench in the container'
|
|
echo ' -d sitename enables developer mode for specified site'
|
|
echo ' -a adds site-names to /etc/hosts file in the container to facilitate multisite access'
|
|
echo ' --setup [-u] builds docker containers, NOTE: assumes you have docker installed'
|
|
echo ' -u start up docker containers as well'
|
|
echo ' --start [-b] starts frappe docker'
|
|
echo ' -b starts bench as well'
|
|
echo ' --init [-e] [sitename] initializes frappe-bench in docker and adds a site "sitename" (if not specified, it will default to site1.local)'
|
|
echo ' -e initializes frappe-bench and installs erpnext'
|
|
}
|
|
|
|
function frappe_installer {
|
|
echo "starting frappe_docker setup"
|
|
docker exec -i -u root frappe bash -c "cd /home/frappe && chown -R frappe:frappe ./*"
|
|
docker exec -it frappe bash -c "cd .. && bench init frappe-bench --ignore-exist --skip-redis-config-generation && cd frappe-bench"
|
|
docker exec -it frappe bash -c "mv Procfile_docker Procfile && mv sites/common_site_config_docker.json sites/common_site_config.json"
|
|
echo "frappe-bench folder setup"
|
|
docker exec -it -u root frappe bash -c "apt-get install vim -y && apt-get install sudo -y && usermod -aG sudo frappe && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe"
|
|
echo "adding $1"
|
|
docker exec -it frappe bash -c "bench new-site $1"
|
|
docker exec -i -u root frappe bash -c "echo 127.0.0.1 $1 >> /etc/hosts"
|
|
sudo su -c 'echo 127.0.0.1 $1 >> /etc/hosts'
|
|
echo "$1 added"
|
|
}
|
|
|
|
|
|
add=0
|
|
setup=0
|
|
up=0
|
|
start=0
|
|
init=0
|
|
dev=0
|
|
erp=0
|
|
mgr=0
|
|
site=0
|
|
bench=0
|
|
cmd=0
|
|
|
|
positional=()
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
|
|
case "$key" in
|
|
-h | --help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
-a | --add)
|
|
add=1
|
|
;;
|
|
-d | --developer)
|
|
dev=1
|
|
;;
|
|
-c)
|
|
cmd=1
|
|
;;
|
|
-u)
|
|
up=1
|
|
;;
|
|
-m)
|
|
mgr=1
|
|
;;
|
|
-b)
|
|
bench=1
|
|
;;
|
|
--setup)
|
|
setup=1
|
|
;;
|
|
--init)
|
|
init=1
|
|
;;
|
|
--start)
|
|
start=1
|
|
;;
|
|
*)
|
|
positional+=("$key")
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
set -- "${positional[@]}"
|
|
|
|
site="$1"
|
|
|
|
if [ $setup == 1 ]; then
|
|
docker-compose build
|
|
if [ $up == 1 ]; then
|
|
docker-compose up -d
|
|
else
|
|
docker-compose up
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if [ $init == 1 ]; then
|
|
|
|
frappe_installer "$site"
|
|
|
|
if [ $mgr == 1 ]; then
|
|
echo "installing bench manager"
|
|
docker exec -it frappe bash -c "bench setup manager"
|
|
fi
|
|
|
|
if [ $erp == 1 ]; then
|
|
echo "installing erpnext"
|
|
docker exec -it frappe bash -c "bench get-app erpnext"
|
|
docker exec -it frappe bash -c "bench --site $site install-app erpnext"
|
|
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
|
|
echo "finished"
|
|
fi
|
|
|
|
if [ $dev == 1 ]; then
|
|
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if [ $dev == 1 ]; then
|
|
if [ "$site" == 0 ]; then
|
|
site="site1.local"
|
|
fi
|
|
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
|
|
exit 0
|
|
fi
|
|
|
|
if [ $start == 1 ]; then
|
|
docker-compose start
|
|
./dbench -a
|
|
if [ $bench == 1 ]; then
|
|
docker exec -it frappe bash -c "bench start"
|
|
fi
|
|
fi
|
|
|
|
if [ $dev == 1 ]; then
|
|
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
|
|
exit 0
|
|
fi
|
|
|
|
if [ $cmd == 1 ]; then
|
|
docker exec -it frappe bash -c "bench $*"
|
|
exit 0
|
|
fi
|
|
|
|
if [ $add == 1 ]; then
|
|
a=$(docker exec -i frappe bash -c "cd ~/frappe-bench && ls sites/*/site_config.json" | grep -o '/.\+/')
|
|
a="${a//$'\n'/ }"
|
|
a=$(echo "$a" | tr -d / )
|
|
result="127.0.0.1 ${a}"
|
|
echo "$result"
|
|
docker exec -u root -i frappe bash -c "echo ${result} | tee --append /etc/hosts"
|
|
docker exec -itu root frappe bash -c "printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe"
|
|
|
|
fi
|
|
exit 0 |