From af7915b4b8836890317748e33bf61c20c6360ebb Mon Sep 17 00:00:00 2001 From: pipeCh Date: Wed, 29 Nov 2017 23:45:20 +0700 Subject: [PATCH 1/5] add init file to Docker Images --- Dockerfile | 17 +++++++-- README.md | 27 ++++++++++++- {frappe-bench => conf/frappe}/Procfile_docker | 16 ++++---- .../frappe}/common_site_config_docker.json | 38 +++++++++---------- conf/frappe/init.sh | 16 ++++++++ docker-compose.yml | 3 +- 6 files changed, 85 insertions(+), 32 deletions(-) rename {frappe-bench => conf/frappe}/Procfile_docker (79%) rename {frappe-bench/sites => conf/frappe}/common_site_config_docker.json (96%) create mode 100644 conf/frappe/init.sh diff --git a/Dockerfile b/Dockerfile index 2b0507b2..8fff2f16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ - #bench Dockerfile FROM ubuntu:16.04 MAINTAINER frappé +#install pre-requisites USER root RUN apt-get update RUN apt-get install -y iputils-ping @@ -19,22 +19,33 @@ RUN apt-get install -y rlwrap RUN apt-get install redis-tools RUN apt-get install -y nano - -#nodejs +#install nodejs +USER root 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 +#clone bench repo USER frappe WORKDIR /home/frappe RUN git clone -b develop https://github.com/frappe/bench.git bench-repo +#install bench USER root RUN pip install -e bench-repo RUN apt-get install -y libmysqlclient-dev mariadb-client mariadb-common +RUN mkdir /home/frappe/frappe-bench RUN chown -R frappe:frappe /home/frappe/* +#install sudo and add sudoers +USER root +RUN apt-get install sudo \ + && usermod -aG sudo frappe \ + && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/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..1fdee540 --- /dev/null +++ b/conf/frappe/init.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +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/docker-compose.yml b/docker-compose.yml index a8beba0b..726476f4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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 From be49c2bc462e52ee1c7ab330ed09610e3dac4e87 Mon Sep 17 00:00:00 2001 From: pipeCh Date: Fri, 1 Dec 2017 09:43:52 +0700 Subject: [PATCH 2/5] move some command from dbench to Dockerfile --- dbench | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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" From 0c3cc85b54166f7b2f16e6fddb9c7c1cfd544d86 Mon Sep 17 00:00:00 2001 From: pipeCh Date: Thu, 21 Dec 2017 20:12:14 +0700 Subject: [PATCH 3/5] Clean up Dockerfile & File Structure --- Dockerfile | 35 +++++++++---------- .../redis-conf}/pids/redis_cache.pid | 0 .../redis-conf}/pids/redis_queue.pid | 0 .../redis-conf}/pids/redis_socketio.pid | 0 .../redis-conf}/redis_cache.conf | 0 .../redis-conf}/redis_queue.conf | 0 .../redis-conf}/redis_socketio.conf | 0 docker-compose.yml | 6 ++-- 8 files changed, 20 insertions(+), 21 deletions(-) rename {redis-conf => conf/redis-conf}/pids/redis_cache.pid (100%) rename {redis-conf => conf/redis-conf}/pids/redis_queue.pid (100%) rename {redis-conf => conf/redis-conf}/pids/redis_socketio.pid (100%) rename {redis-conf => conf/redis-conf}/redis_cache.conf (100%) rename {redis-conf => conf/redis-conf}/redis_queue.conf (100%) rename {redis-conf => conf/redis-conf}/redis_socketio.conf (100%) diff --git a/Dockerfile b/Dockerfile index 8fff2f16..ea61b2e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,37 @@ -#bench Dockerfile - FROM ubuntu:16.04 MAINTAINER frappé #install pre-requisites USER root RUN apt-get update +RUN apt-get install -y sudo 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 libmysqlclient-dev mariadb-client mariadb-common 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 redis-tools RUN apt-get install -y nano +RUN apt-get install -y curl +RUN apt-get install -y wkhtmltopdf +RUN wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py +RUN pip install --upgrade setuptools pip +RUN apt-get upgrade + +#add users & sudoers +USER root +RUN useradd -ms /bin/bash frappe +RUN usermod -aG sudo frappe +RUN printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe #install nodejs USER root -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 +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 #clone bench repo USER frappe @@ -35,16 +41,9 @@ RUN git clone -b develop https://github.com/frappe/bench.git bench-repo #install bench USER root RUN pip install -e bench-repo -RUN apt-get install -y libmysqlclient-dev mariadb-client mariadb-common RUN mkdir /home/frappe/frappe-bench RUN chown -R frappe:frappe /home/frappe/* -#install sudo and add sudoers -USER root -RUN apt-get install sudo \ - && usermod -aG sudo frappe \ - && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe - COPY ./conf/frappe/* /home/frappe/ USER frappe 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/docker-compose.yml b/docker-compose.yml index 726476f4..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"] From 715b2fabf2b3afe33f5f03d22fc76093e7930d0b Mon Sep 17 00:00:00 2001 From: pipeCh Date: Fri, 22 Dec 2017 12:24:41 +0700 Subject: [PATCH 4/5] merge install pre-requisites RUN into 1 RUN --- Dockerfile | 68 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index ea61b2e5..dd52cdf0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,29 +3,47 @@ MAINTAINER frappé #install pre-requisites USER root -RUN apt-get update -RUN apt-get install -y sudo -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 libmysqlclient-dev mariadb-client mariadb-common -RUN apt-get install -y wget -RUN apt-get install -y curl -RUN apt-get install -y rlwrap -RUN apt-get install -y redis-tools -RUN apt-get install -y nano -RUN apt-get install -y curl -RUN apt-get install -y wkhtmltopdf -RUN wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py -RUN pip install --upgrade setuptools pip -RUN apt-get upgrade +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/* -#add users & sudoers -USER root -RUN useradd -ms /bin/bash frappe -RUN usermod -aG sudo frappe -RUN printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe +#install pip +RUN wget https://bootstrap.pypa.io/get-pip.py \ + && python get-pip.py \ + && pip install --upgrade setuptools pip #install nodejs USER root @@ -33,6 +51,12 @@ RUN curl https://deb.nodesource.com/node_6.x/pool/main/n/nodejs/nodejs_6.7.0-1no && dpkg -i node.deb \ && rm node.deb +#add users & sudoers +USER root +RUN useradd -ms /bin/bash frappe +RUN usermod -aG sudo frappe +RUN printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe + #clone bench repo USER frappe WORKDIR /home/frappe From 6fcbdfe1747a2eba76f69d9b212285fe283cc6b1 Mon Sep 17 00:00:00 2001 From: pipeCh Date: Fri, 22 Dec 2017 14:09:08 +0700 Subject: [PATCH 5/5] move bench install to init.sh file --- Dockerfile | 21 +++++---------------- conf/frappe/init.sh | 3 +++ 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index dd52cdf0..6ac408de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,27 +46,16 @@ RUN wget https://bootstrap.pypa.io/get-pip.py \ && pip install --upgrade setuptools pip #install nodejs -USER root 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 #add users & sudoers -USER root -RUN useradd -ms /bin/bash frappe -RUN usermod -aG sudo frappe -RUN printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe - -#clone bench repo -USER frappe -WORKDIR /home/frappe -RUN git clone -b develop https://github.com/frappe/bench.git bench-repo - -#install bench -USER root -RUN pip install -e bench-repo -RUN mkdir /home/frappe/frappe-bench -RUN chown -R frappe:frappe /home/frappe/* +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/* COPY ./conf/frappe/* /home/frappe/ diff --git a/conf/frappe/init.sh b/conf/frappe/init.sh index 1fdee540..562fd313 100644 --- a/conf/frappe/init.sh +++ b/conf/frappe/init.sh @@ -1,5 +1,8 @@ #!/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 ] ---------------------------------"