mirror of
https://github.com/frappe/frappe_docker.git
synced 2025-01-23 15:18:27 +00:00
refactor: dockerfile
* testing replacement for dbench * fixed perm issue and added docker control * fixes and tests fixed travis test, and perm issue * auto add permissions * bench setup anything-else should work now * removed adding site names to host (its pointless) * moved redis configuration folder into conf/ * added a docker down feature to dbench and changed some of the docs * hopefully should fix the args issue * Condensed Dockerfile Updated to latest node, and uses python-pip, also condensed a lot the Dockerfile. * Removed extra line * Removed MAINTAINER in favor of LABEL * all installs are in one apt command * Switch bench to dbench, added -s feature of dbench to bench. updated Docker file with sudo and vim, and setup travis to run with said changes * dockerfile: clean up (#52) * Condensed Dockerfile Updated to latest node, and uses python-pip, also condensed a lot the Dockerfile. * fixed travis, and cleaned up dbench a little * Oops... * oops, but only for travis, this runs fine * Travis! * added help to dbench, and updated readme * changes some of the wording of the help message * dbench: fix init issues (#55) ./dbench init would lead to 'missing argument: PATH' issue (#54), and could not find Procfile_docker and site-config. Signed-off-by: Chinmay Pai <chinmaydpai@gmail.com> * bench setup anything-else should work now * Clean cache to get a smaller image (#57) Please include this commit to decrease the size of the docker image, the "rm -rf /var/lib/apt/lists/*" it is not usefull if it is not used in the same stage of the apt-get install RUN, similar with pip cache. References: - https://linux.die.net/man/8/apt-get - https://stackoverflow.com/questions/9510474/removing-pips-cache - https://semaphoreci.com/blog/2016/12/13/lightweight-docker-images-in-5-steps.html By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; (b) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. Signed-off-by: William Moreno Reyes <williamjmorenor@gmail.com> * removed adding site names to host (its pointless) * moved redis configuration folder into conf/ * added a docker down feature to dbench and changed some of the docs * Changed the readme significantly Please enter the commit message for your changes. Lines starting * changed test.py to avoid naming errors * moving some things around for less lines * some more slight name changes * added a .gitignore * added the frappe folder again * added a .dockerignore and fixed the dockerfile up a bit * Updating travis' docker and compose This is the commit message #3: * bringing chown in dbench back * some refractoring * implementing codacy sugestions * moving some things around * Updating dbench in some areas * some random changes and fixes * dockerfile refactoring * Refractoring, reducing layers * removing the py script that took too many lines to do one simple thing * Fixed up the readme * some refractoring * moving to debian slim and refractoring * adding some logging * Updated travis to ubuntu xenial, should fix the curl issue * manually building curl, cause we cant use the latest version... * maybe we dont need it * changing the url to curl * trying this instead * lets just let it pollute the stream * please pollute! * some last bits of refractoring * some refractoring * fixed a few issues and did some refractoring * needed an excuse to get travis to build * adding in some changes learnt from seibert-media/erpnext-docker * that should fix that * where did that "h" come from? * fix that... * maybe that * please work... * try that for locales * dont know what that's doing there * so it didn't work... * lets try doing locales like this * forgot the -y... * trying it this way * and if we dont remove it? * what about like this? * small change * small change * I wonder... * some small refractoring * saving some time * bring that back * fix the smallie
This commit is contained in:
parent
4e7dd47d0e
commit
acee24b577
@ -26,10 +26,5 @@ install:
|
||||
- ./dbench setup hosts
|
||||
|
||||
script:
|
||||
- docker-compose ps | grep -i frappe
|
||||
- docker-compose ps | grep -i redis-cache
|
||||
- docker-compose ps | grep -i redis-queue
|
||||
- docker-compose ps | grep -i redis-socketio
|
||||
- docker-compose ps | grep -i mariadb
|
||||
- ./test.sh
|
||||
- ./dbench setup docker stop
|
||||
|
30
Dockerfile
30
Dockerfile
@ -3,32 +3,42 @@
|
||||
FROM debian:9.6-slim
|
||||
LABEL author=frappé
|
||||
|
||||
# Set locale C.UTF-8 for mariadb and general locale data
|
||||
ENV LANG C.UTF-8
|
||||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends locales \
|
||||
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
|
||||
&& dpkg-reconfigure --frontend=noninteractive locales \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Set locale en_us.UTF-8 for mariadb and general locale data
|
||||
ENV PYTHONIOENCODING=utf-8
|
||||
ENV LANGUAGE=en_US.UTF-8
|
||||
ENV LANG=en_US.UTF-8
|
||||
ENV LC_ALL=en_US.UTF-8
|
||||
|
||||
# Install all neccesary packages
|
||||
RUN apt-get update && apt-get install -y --no-install-suggests --no-install-recommends build-essential cron curl git iputils-ping libffi-dev \
|
||||
liblcms2-dev libldap2-dev libmariadbclient-dev libsasl2-dev libssl-dev libtiff5-dev libwebp-dev mariadb-client \
|
||||
python-dev python-pip python-setuptools python-tk redis-tools rlwrap software-properties-common sudo tk8.6-dev \
|
||||
vim xfonts-75dpi xfonts-base wget wkhtmltopdf \
|
||||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-suggests --no-install-recommends \
|
||||
build-essential cron curl git libffi-dev liblcms2-dev libldap2-dev libmariadbclient-dev libsasl2-dev libssl-dev libtiff5-dev \
|
||||
libwebp-dev mariadb-client iputils-ping python-dev python-pip python-setuptools python-tk redis-tools rlwrap \
|
||||
software-properties-common sudo tk8.6-dev vim xfonts-75dpi xfonts-base wget wkhtmltopdf \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
||||
&& pip install --upgrade setuptools pip --no-cache \
|
||||
&& curl https://deb.nodesource.com/node_10.x/pool/main/n/nodejs/nodejs_10.10.0-1nodesource1_amd64.deb > node.deb \
|
||||
&& dpkg -i node.deb \
|
||||
&& rm node.deb \
|
||||
&& npm install -g yarn
|
||||
|
||||
# Add frappe user and setup sudo
|
||||
RUN useradd -ms /bin/bash -G sudo frappe \
|
||||
&& printf '# Sudo rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe
|
||||
RUN groupadd -g 500 frappe \
|
||||
&& useradd -ms /bin/bash -u 500 -g 500 -G sudo frappe \
|
||||
&& printf '# Sudo rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/frappe \
|
||||
&& chown -R 500:500 /home/frappe
|
||||
|
||||
WORKDIR /home/frappe
|
||||
# Install bench
|
||||
RUN pip install -e git+https://github.com/frappe/bench.git#egg=bench --no-cache
|
||||
|
||||
USER frappe
|
||||
|
||||
# Add some bench files
|
||||
COPY --chown=frappe:frappe ./frappe-bench /home/frappe/frappe-bench
|
||||
|
||||
WORKDIR /home/frappe/frappe-bench
|
||||
|
||||
EXPOSE 8000 9000 6787
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Frappe on Docker
|
||||
|
||||
[![Build Status](https://travis-ci.org/frappe/frappe_docker.svg?branch=develop)](https://travis-ci.org/frappe/frappe_docker)
|
||||
[![Build Status](https://travis-ci.com/frappe/frappe_docker.svg)](https://travis-ci.com/frappe/frappe_docker)
|
||||
|
||||
This is a repo designed to aide setting up frappe/ERPNext on docker.
|
||||
|
||||
@ -38,7 +38,7 @@ Unfortunately, this container is not curently suited for a production environmen
|
||||
./dbench start
|
||||
```
|
||||
|
||||
4. Use Frappe:
|
||||
4. Use Frappe:
|
||||
Open your browser to `localhost:8000/login`. Then login using the username `Administrator` and the password `admin`.
|
||||
|
||||
### Basic Usage of `./dbench`
|
||||
@ -51,7 +51,7 @@ Unfortunately, this container is not curently suited for a production environmen
|
||||
- `stop`: Stops the containers with `docker-compose stop`.
|
||||
- `down`: Deletes the containers and the coresponding volumes with `docker-compose down`.
|
||||
|
||||
- `./dbench setup hosts`: Adds all sites to the containers hosts file.
|
||||
- `./dbench setup hosts`: Adds all sites to the containers hosts file.
|
||||
**Note:** Run this after you've added a new site to avoid errors.
|
||||
|
||||
- `./dbench -c frappe | root <command to run>`: Runs a command in the container, as the selected user.
|
||||
|
29
dbench
29
dbench
@ -24,11 +24,14 @@ elif [[ "$1" == 'setup' ]]; then
|
||||
docker-compose up -d
|
||||
fi
|
||||
elif [[ "$2" == 'hosts' ]]; then
|
||||
a=$(run frappe "ls sites/*/site_config.json | grep -o '/.\+/'") \
|
||||
a=$(run frappe "ls sites/*/site_config.json | grep -o '/.\+/'")
|
||||
a="${a//$'\n'/ }"
|
||||
a=$(echo "$a" | tr -d / )
|
||||
result="127.0.0.1 ${a}"
|
||||
run root "echo ${result} | tee --append /etc/hosts"
|
||||
run root "echo ${result} | tee -a /etc/hosts"
|
||||
else
|
||||
IFS=" "
|
||||
run frappe "bench $*"
|
||||
fi
|
||||
elif [[ "$1" == '-c' ]]; then
|
||||
shift
|
||||
@ -36,22 +39,22 @@ elif [[ "$1" == '-c' ]]; then
|
||||
shift
|
||||
run "$user" "$@"
|
||||
elif [[ "$1" == '-h' ]]; then
|
||||
echo "$0 [-h] | [ -c frappe | root <command to run> ] [ <command to send to bench> ]"
|
||||
echo "$0 [-h] | [-c frappe|root command] | [setup hosts|docker [stop|down]] | [bench_command]"
|
||||
echo ""
|
||||
echo "$0 extends the Frappe Bench tool, and is used like it. However, it extends the tool in a few places."
|
||||
echo "$0 is a wrapper for the Frappe Bench tool, and is used like it. However, it extends the tool in a few places."
|
||||
echo "Usage:"
|
||||
echo " $0"
|
||||
echo " Launches you into an interactive shell in the container as user frappe"
|
||||
echo " $0 setup docker [ stop | down ]"
|
||||
echo " Starts and builds the docker containers using \"docker-compose up -d\""
|
||||
echo " $0 setup hosts"
|
||||
echo " Adds all sites to the containers hosts file"
|
||||
echo " $0 -c frappe | root <command to run>"
|
||||
echo " Runs a command in the container, as the selected user"
|
||||
echo " $0 -h"
|
||||
echo " Shows this help message"
|
||||
echo " $0"
|
||||
echo " Launches you into an interactive shell in the container as user frappe"
|
||||
echo " $0 <command to send to bench>"
|
||||
echo " Runs a command in bench, i.e. $0 new-site site1.local = bench new-site site1.local"
|
||||
echo " Runs the bench command <command>, i.e. $0 new-site \"site1.local\" = bench new-site \"site1.local\""
|
||||
echo " $0 setup docker [ stop | down ]"
|
||||
echo " Builds and starts the docker containers using \"docker-compose up -d\""
|
||||
echo " $0 setup hosts"
|
||||
echo " Adds all site names to the containers hosts file"
|
||||
echo " $0 -c frappe | root <command to run>"
|
||||
echo " Runs a command in the container, as the selected user"
|
||||
else
|
||||
IFS=" "
|
||||
run frappe "bench $*"
|
||||
|
12
test.sh
12
test.sh
@ -1,8 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
cat <(./dbench start) &
|
||||
docker container ls | grep frappe
|
||||
docker container ls | grep mariadb
|
||||
docker container ls | grep redis-cache
|
||||
docker container ls | grep redis-queue
|
||||
docker container ls | grep redis-socketio
|
||||
|
||||
sleep 5
|
||||
cat <(./dbench start) &
|
||||
|
||||
while ! [[ $i == 20 ]]
|
||||
do
|
||||
@ -11,7 +15,7 @@ do
|
||||
} 1>&2
|
||||
sleep 2
|
||||
i=$((i + 1))
|
||||
echo "${output}" | grep '<title> Login </title>' && exit
|
||||
done
|
||||
|
||||
|
||||
echo "${output}" | grep '<title> Login </title>' || exit 1
|
||||
if ! [[ "$?" == 0 ]]; then exit 1; fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user