diff --git a/Dockerfile b/Dockerfile index 2b0507b2..6ac408de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,63 @@ - -#bench Dockerfile - FROM ubuntu:16.04 MAINTAINER frappé +#install pre-requisites USER root -RUN apt-get update -RUN apt-get install -y iputils-ping -RUN apt-get install -y git build-essential python-setuptools python-dev libffi-dev libssl-dev -RUN apt-get install -y redis-tools software-properties-common libxrender1 libxext6 xfonts-75dpi xfonts-base -RUN apt-get install -y libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev python-tk apt-transport-https libsasl2-dev libldap2-dev libtiff5-dev tcl8.6-dev tk8.6-dev -RUN apt-get install -y wget -RUN wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py -RUN pip install --upgrade setuptools pip -RUN useradd -ms /bin/bash frappe -RUN apt-get install -y curl -RUN apt-get install -y rlwrap -RUN apt-get install redis-tools -RUN apt-get install -y nano +RUN apt-get update && apt-get install -y \ + apt-transport-https \ + build-essential \ + curl \ + git \ + iputils-ping \ + libffi-dev \ + libfreetype6-dev \ + libjpeg8-dev \ + liblcms2-dev \ + libldap2-dev \ + libmysqlclient-dev \ + libsasl2-dev \ + libssl-dev \ + libtiff5-dev \ + libwebp-dev \ + libxext6 \ + libxrender1 \ + mariadb-client \ + mariadb-common \ + nano \ + python-dev \ + python-setuptools \ + python-tk \ + redis-tools \ + rlwrap \ + software-properties-common \ + sudo \ + tcl8.6-dev \ + tk8.6-dev \ + wget \ + wkhtmltopdf \ + xfonts-75dpi \ + xfonts-base \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* +#install pip +RUN wget https://bootstrap.pypa.io/get-pip.py \ + && python get-pip.py \ + && pip install --upgrade setuptools pip -#nodejs -RUN apt-get install curl -RUN curl https://deb.nodesource.com/node_6.x/pool/main/n/nodejs/nodejs_6.7.0-1nodesource1~xenial1_amd64.deb > node.deb \ - && dpkg -i node.deb \ - && rm node.deb -RUN apt-get install -y wkhtmltopdf +#install nodejs +RUN curl https://deb.nodesource.com/node_6.x/pool/main/n/nodejs/nodejs_6.7.0-1nodesource1~xenial1_amd64.deb > node.deb \ + && dpkg -i node.deb \ + && rm node.deb -USER frappe -WORKDIR /home/frappe -RUN git clone -b develop https://github.com/frappe/bench.git bench-repo +#add users & sudoers +RUN useradd -ms /bin/bash frappe \ + && usermod -aG sudo frappe \ + && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe \ + && mkdir /home/frappe/frappe-bench \ + && chown -R frappe:frappe /home/frappe/* -USER root -RUN pip install -e bench-repo -RUN apt-get install -y libmysqlclient-dev mariadb-client mariadb-common -RUN chown -R frappe:frappe /home/frappe/* +COPY ./conf/frappe/* /home/frappe/ USER frappe WORKDIR /home/frappe/frappe-bench diff --git a/README.md b/README.md index de697048..2b8fb651 100644 --- a/README.md +++ b/README.md @@ -98,9 +98,34 @@ Express dependency between services, which has two effects: Note: Please do not remove the bench-repo directory the above commands will create +#### Basic Usage from Windows Hosr +1. Command to start all the containers + docker-compose start + +2. Command to enter your container -#### Basic Usage + docker exec -it frappe bash + +3. First time setup + + cd .. & . init.sh + + +##### Password +- MariaDB + + User : root + + Pass : 123 + +- Sites + + User : Administrator + + Pass : admin + +#### Basic Usage from Linux Host ##### Make sure your current directory is frappe_docker 1. First time setup diff --git a/frappe-bench/Procfile_docker b/conf/frappe/Procfile_docker similarity index 79% rename from frappe-bench/Procfile_docker rename to conf/frappe/Procfile_docker index e2a5bd93..6851b466 100644 --- a/frappe-bench/Procfile_docker +++ b/conf/frappe/Procfile_docker @@ -1,8 +1,8 @@ -web: bench serve --port 8000 - -socketio: /usr/bin/node apps/frappe/socketio.js -watch: bench watch -schedule: bench schedule -worker_short: bench worker --queue short -worker_long: bench worker --queue long -worker_default: bench worker --queue default +web: bench serve --port 8000 + +socketio: /usr/bin/node apps/frappe/socketio.js +watch: bench watch +schedule: bench schedule +worker_short: bench worker --queue short +worker_long: bench worker --queue long +worker_default: bench worker --queue default \ No newline at end of file diff --git a/frappe-bench/sites/common_site_config_docker.json b/conf/frappe/common_site_config_docker.json similarity index 96% rename from frappe-bench/sites/common_site_config_docker.json rename to conf/frappe/common_site_config_docker.json index cdc9d198..84b11327 100644 --- a/frappe-bench/sites/common_site_config_docker.json +++ b/conf/frappe/common_site_config_docker.json @@ -1,20 +1,20 @@ -{ - "auto_update": false, - "background_workers": 1, - "db_host": "mariadb", - "file_watcher_port": 6787, - "frappe_user": "frappe", - "gunicorn_workers": 4, - "rebase_on_pull": false, - "redis_cache": "redis://redis-cache:13000", - "redis_queue": "redis://redis-queue:11000", - "redis_socketio": "redis://redis-socketio:12000", - "restart_supervisor_on_update": false, - "root_password": "123", - "serve_default_site": true, - "shallow_clone": true, - "socketio_port": 9000, - "update_bench_on_update": true, - "webserver_port": 8000, - "admin_password": "admin" +{ + "auto_update": false, + "background_workers": 1, + "db_host": "mariadb", + "file_watcher_port": 6787, + "frappe_user": "frappe", + "gunicorn_workers": 4, + "rebase_on_pull": false, + "redis_cache": "redis://redis-cache:13000", + "redis_queue": "redis://redis-queue:11000", + "redis_socketio": "redis://redis-socketio:12000", + "restart_supervisor_on_update": false, + "root_password": "123", + "serve_default_site": true, + "shallow_clone": true, + "socketio_port": 9000, + "update_bench_on_update": true, + "webserver_port": 8000, + "admin_password": "admin" } \ No newline at end of file diff --git a/conf/frappe/init.sh b/conf/frappe/init.sh new file mode 100644 index 00000000..562fd313 --- /dev/null +++ b/conf/frappe/init.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +echo "----------------------- [ Install bench ] ---------------------------------" +git clone -b develop https://github.com/frappe/bench.git bench-repo +sudo pip install -e bench-repo +echo "----------------------- [ init bench ] ---------------------------------" +bench init frappe-bench --skip-bench-mkdir --skip-redis-config-generation +echo "----------------------- [ config bench ] ---------------------------------" +cd frappe-bench +mv /home/frappe/Procfile_docker /home/frappe/frappe-bench/Procfile +mv /home/frappe/common_site_config_docker.json /home/frappe/frappe-bench/sites/common_site_config.json +bench set-mariadb-host mariadb +echo "----------------------- [ new site ] ---------------------------------" +bench new-site site1.local --mariadb-root-password 123 --admin-password frappe +echo "----------------------- [ install erpnext ] ---------------------------------" +bench get-app erpnext https://github.com/frappe/erpnext +bench --site site1.local install-app erpnext +echo "----------------------- [ bench update ] ---------------------------------" +bench update diff --git a/redis-conf/pids/redis_cache.pid b/conf/redis-conf/pids/redis_cache.pid similarity index 100% rename from redis-conf/pids/redis_cache.pid rename to conf/redis-conf/pids/redis_cache.pid diff --git a/redis-conf/pids/redis_queue.pid b/conf/redis-conf/pids/redis_queue.pid similarity index 100% rename from redis-conf/pids/redis_queue.pid rename to conf/redis-conf/pids/redis_queue.pid diff --git a/redis-conf/pids/redis_socketio.pid b/conf/redis-conf/pids/redis_socketio.pid similarity index 100% rename from redis-conf/pids/redis_socketio.pid rename to conf/redis-conf/pids/redis_socketio.pid diff --git a/redis-conf/redis_cache.conf b/conf/redis-conf/redis_cache.conf similarity index 100% rename from redis-conf/redis_cache.conf rename to conf/redis-conf/redis_cache.conf diff --git a/redis-conf/redis_queue.conf b/conf/redis-conf/redis_queue.conf similarity index 100% rename from redis-conf/redis_queue.conf rename to conf/redis-conf/redis_queue.conf diff --git a/redis-conf/redis_socketio.conf b/conf/redis-conf/redis_socketio.conf similarity index 100% rename from redis-conf/redis_socketio.conf rename to conf/redis-conf/redis_socketio.conf diff --git a/dbench b/dbench index 9fd54a74..0866d899 100755 --- a/dbench +++ b/dbench @@ -16,10 +16,10 @@ if [[ $# -eq 0 ]]; then elif [ $1 == 'init' ] then - 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 --skip-bench-mkdir --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" - docker exec -it -u root frappe bash -c "apt-get install vim && apt-get install sudo && usermod -aG sudo frappe && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe" + docker exec -it frappe bash -c "mv /home/frappe/Procfile_docker /home/frappe/frappe-bench/Procfile" + docker exec -it frappe bash -c "mv /home/frappe/common_site_config_docker.json /home/frappe/frappe-bench/sites/common_site_config.json" + docker exec -it -u root frappe bash -c "apt-get install vim" docker exec -it frappe bash -c "bench set-mariadb-host mariadb" docker exec -it frappe bash -c "bench new-site site1.local" docker exec -it frappe bash -c "bench get-app erpnext" diff --git a/docker-compose.yml b/docker-compose.yml index a8beba0b..2feaf11b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: image: redis:alpine volumes: - - ./redis-conf/redis_cache.conf:/etc/conf.d/redis.conf + - ./conf/redis-conf/redis_cache.conf:/etc/conf.d/redis.conf command: ["redis-server","/etc/conf.d/redis.conf"] @@ -25,7 +25,7 @@ services: image: redis:alpine volumes: - - ./redis-conf/redis_queue.conf:/etc/conf.d/redis.conf + - ./conf/redis-conf/redis_queue.conf:/etc/conf.d/redis.conf command: ["redis-server","/etc/conf.d/redis.conf"] @@ -35,7 +35,7 @@ services: image: redis:alpine volumes: - - ./redis-conf/redis_socketio.conf:/etc/conf.d/redis.conf + - ./conf/redis-conf/redis_socketio.conf:/etc/conf.d/redis.conf command: ["redis-server","/etc/conf.d/redis.conf"] @@ -43,7 +43,8 @@ services: frappe: volumes: - - ./frappe-bench:/home/frappe/frappe-bench + - ./frappe-bench/apps:/home/frappe/frappe-bench/apps + - ./frappe-bench/sites:/home/frappe/frappe-bench/sites build: . ports: - "8000:8000" #webserver_port