[ADD][WIP]Frappé/ERPNext own images (not finished)

This commit is contained in:
Fabien BOURGEOIS 2017-10-21 16:32:23 +02:00
parent ede9cee570
commit da5b752014
29 changed files with 779 additions and 0 deletions

View File

@ -0,0 +1,17 @@
FROM lukptr/ubuntu:16.04-23112016
MAINTAINER lukptr <lukptr@ridhosribumi.com>
ENV FRAPPE_USER=frappe \
MYSQL_PASSWORD=12345678 \
ADMIN_PASSWORD=12345678 \
DEBIAN_FRONTEND=noninteractive
RUN useradd $FRAPPE_USER && mkdir /home/$FRAPPE_USER && chown -R $FRAPPE_USER.$FRAPPE_USER /home/$FRAPPE_USER
WORKDIR /home/$FRAPPE_USER
RUN wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py && sed -i "s/'', ''/'$MYSQL_PASSWORD', '$ADMIN_PASSWORD'/g" install.py && \
apt update && python install.py --production --user $FRAPPE_USER
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/ /home/$FRAPPE_USER/.cache
COPY production.conf /etc/supervisor/conf.d/
WORKDIR /home/$FRAPPE_USER/frappe-bench
EXPOSE 80 25
CMD ["/usr/bin/supervisord","-n"]

47
frappe/base.yml Normal file
View File

@ -0,0 +1,47 @@
version: '2.2'
services:
frappebase:
init: true
build: ./frappe
image: registry.yaltik.net/frappe:yaltik
environment:
FRAPPE_USER: frappe
MYSQL_PASSWORD: somethingToChange
ADMIN_PASSWORD: somethingToChange
stdin_open: true
tty: true
frappedev:
extends:
service: frappebase
build:
context: ./frappe
dockerfile: Dockerfile.dev
image: registry.yaltik.net/frappe:yaltikdev
ports:
- 8000:8000
- 9000:9000
- 6787:6787
- 8001:80
frappeprod:
extends:
service: frappebase
build:
context: ./frappe
dockerfile: Dockerfile.prod
image: registry.yaltik.net/frappe:yaltikprod
ports:
- 8000:8000
- 9000:9000
- 6787:6787
- 80:80
# erpnext:
# erinit: true
# erbuild: ./erpnext
# erimage: registry.yaltik.net/eprnext:yaltik
# erenvironment:
# er POSTGRES_USER: odoo
# er POSTGRES_PASSWORD: somethingToChange

25
frappe/frappe/Dockerfile Normal file
View File

@ -0,0 +1,25 @@
FROM ubuntu:16.04
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# Environment variables
ENV FRAPPE_USER=frappe \
MYSQL_PASSWORD=somethingToChange \
ADMIN_PASSWORD=somethingToChange
# Global dependencies
RUN apt-get update
RUN apt-get install -y sudo curl
# Frappe dependencies
RUN apt-get install -y python-minimal build-essential python-setuptools
# Create frappe user
RUN useradd $FRAPPE_USER -m
# RUN usermod -aG sudo $FRAPPE_USER
RUN echo "$FRAPPE_USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/frappe
WORKDIR /home/$FRAPPE_USER
# Install frappe
RUN curl -LO https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
# Volumes : data dir
VOLUME /home/$FRAPPE_USER/

View File

@ -0,0 +1,11 @@
FROM registry.yaltik.net/frappe:yaltik
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# Frappe development setup
RUN python install.py --develop --user $FRAPPE_USER --mysql-root-password $MYSQL_PASSWORD --admin-password $ADMIN_PASSWORD
USER frappe
WORKDIR /home/$FRAPPE_USER/frappe-bench
EXPOSE 8000 9000 6787

View File

@ -0,0 +1,51 @@
FROM ubuntu:16.04
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# Environment variables
ENV FRAPPE_USER=frappe \
MYSQL_PASSWORD=somethingToChange \
ADMIN_PASSWORD=somethingToChange
# Global dependencies
RUN apt-get update
RUN apt-get install -y sudo curl wget
RUN apt-get install -y git build-essential python-setuptools python-pip python-dev libffi-dev libssl-dev
RUN apt-get install -y python-minimal build-essential python-setuptools
RUN pip install --upgrade setuptools pip
# Create frappe user
RUN useradd $FRAPPE_USER -m
# RUN usermod -aG sudo $FRAPPE_USER
RUN echo "$FRAPPE_USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/frappe
WORKDIR /home/$FRAPPE_USER
# Ubuntu package install
RUN apt-get install -y build-essential redis-server software-properties-common libxrender1 libxext6 xfonts-75dpi xfonts-base 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
# NodeJS external repository
RUN echo "deb [arch=amd64,i386] https://deb.nodesource.com/node_6.x xenial main" \
> /etc/apt/sources.list.d/nodesource.list \
&& curl 'https://keyserver.ubuntu.com/pks/lookup?op=get&fingerprint=on&search=0x1655A0AB68576280' | apt-key add -
RUN apt-get update && apt-get install -y nodejs
# WKHTMLTOPDF
RUN curl -L 'https://github.com/frappe/wkhtmltopdf/raw/master/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz' > /tmp/wkhtmltox.tar.xz
RUN cd /tmp/ && tar Jxf wkhtmltox.tar.xz \
&& cp /tmp/wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf \
&& chmod +x /usr/local/bin/wkhtmltopdf
# MariaDb
RUN echo "deb [arch=amd64,i386] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu xenial main" \
> /etc/apt/sources.list.d/mariadb.list \
&& curl 'https://keyserver.ubuntu.com/pks/lookup?op=get&fingerprint=on&search=0xF1656F24C74CD1D8' | apt-key add -
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update \
&& apt-get install -y mariadb-server mariadb-client mariadb-common libmariadbclient-dev
RUN pip install mysql-python==1.2.5
COPY simple_mariadb_config.cnf /etc/mysql/conf.d/frappe.cnf
RUN mysqladmin -u root password $MYSQL_PASSWORD
# Install frappe
# RUN curl -LO https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
# Volumes : data dir
VOLUME /home/$FRAPPE_USER/

View File

@ -0,0 +1,49 @@
FROM debian:jessie
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# Global dependencies
RUN apt-get update
RUN apt-get install -y sudo curl wget rlwrap
RUN apt-get install -y iputils-ping
RUN apt-get install -y git build-essential python-setuptools python-pip 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 pip install --upgrade setuptools pip
# NodeJS
RUN curl -LO https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz && tar xJf node-v6.11.3-linux-x64.tar.xz && ln -s node-v6.11.3-linux.x64/bin/node /usr/bin/ && ln -s node-v6.11.3-linux.x64/bin/npm /usr/bin/
# WKHTMLTOPDF
RUN apt-get install -y wkhtmltopdf
# Environment variables
ENV FRAPPE_USER=frappe \
MYSQL_PASSWORD=somethingToChange \
ADMIN_PASSWORD=somethingToChange
# Create frappe user
RUN useradd $FRAPPE_USER -m
# RUN usermod -aG sudo $FRAPPE_USER
RUN echo "$FRAPPE_USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/frappe
# Install frappe
RUN git clone --depth 1 https://github.com/frappe/bench bench_repo
RUN pip install -e bench-repo
RUN curl -LO https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
RUN python install.py --production --user $FRAPPE_USER --mysql-root-password $MYSQL_PASSWORD --admin-password $ADMIN_PASSWORD
# Supervidor production configuration
# COPY production.conf /etc/supervisor/conf.d/
WORKDIR /home/$FRAPPE_USER
USER frappe
# Cleanup (to move on production)
# RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/ /home/$FRAPPE_USER/.cache
WORKDIR /home/$FRAPPE_USER/frappe-bench
# Default ports
EXPOSE 80 25
# Volumes : data dir
VOLUME /opt/odoo/data
# CMD ["/usr/bin/supervisord","-n"]

View File

@ -0,0 +1,22 @@
FROM registry.yaltik.net/frappe:yaltik
MAINTAINER Yaltik - Fabien Bourgeois <fabien@yaltik.com>
# Frappe production setup
RUN python install.py --production --user $FRAPPE_USER --mysql-root-password $MYSQL_PASSWORD --admin-password $ADMIN_PASSWORD
# Supervisor configuration
COPY production.conf /etc/supervisor/conf.d/
# Cleanup
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/
# Frappe local production setup
USER frappe
WORKDIR /home/$FRAPPE_USER/frappe-bench
RUN bench setup production
# Default ports
EXPOSE 80 25
# Default command
CMD ["/usr/bin/supervisord","-n"]

View File

@ -0,0 +1,26 @@
[program:mysqld]
command=/usr/bin/pidproxy /var/mysqld/mysqld.pid /usr/bin/mysqld_safe --pid-file=/var/run/mysqld/mysqld.pid
autostart=true
autorestart=true
user=root
[program:crond]
command=/usr/sbin/cron -f
process_name=cron
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=root
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
stdout_events_enabled=true
stderr_events_enabled=true

View File

@ -0,0 +1,11 @@
[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_allowed_packet=64M
[mysql]
default-character-set = utf8mb4

View File

@ -0,0 +1,30 @@
language: python
python:
- "2.7"
env:
- DOCKER_COMPOSE_VERSION: 1.8.0
services:
- docker
install:
- docker-compose build
- docker-compose up -d
- docker exec -it -u root frappe bash -c "cd /home/frappe && chown -R frappe:frappe ./*"
- docker exec -i frappe bash -c "cd .. && bench init frappe-bench --skip-bench-mkdir --skip-redis-config-generation && cd frappe-bench"
- docker exec -i frappe bash -c "mv Procfile_docker Procfile && mv sites/common_site_config_docker.json sites/common_site_config.json"
- docker exec -i frappe bash -c "bench new-site site1.local"
- docker exec -i frappe bash -c "bench get-app erpnext https://github.com/frappe/erpnext"
- docker exec -i frappe bash -c "bench --site site1.local install-app erpnext"
- docker exec -i -u root frappe bash -c "echo 127.0.0.1 site1.local >> /etc/hosts"
- sudo su -c 'echo 127.0.0.1 site1.local >> /etc/hosts'
- pip3 install requests
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
- python3 test.py
- docker-compose stop

View File

@ -0,0 +1,40 @@
#bench Dockerfile
FROM ubuntu:16.04
MAINTAINER Vishal Seshagiri
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
#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
USER frappe
WORKDIR /home/frappe
RUN git clone -b develop https://github.com/vishalseshagiri/bench.git bench-repo
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/*
USER frappe
WORKDIR /home/frappe/frappe-bench

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Frappe Technologies Pvt. Ltd.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,180 @@
# frappe_docker
[![Build Status](https://travis-ci.org/frappe/frappe_docker.svg?branch=master)](https://travis-ci.org/frappe/frappe_docker)
- [Docker](https://docker.com/) is an open source project to pack, ship and run any Linux application in a lighter weight, faster container than a traditional virtual machine.
- Docker makes it much easier to deploy [frappe](https://github.com/frappe/frappe) on your servers.
- This container uses [bench](https://github.com/frappe/bench) to install frappe.
## Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
### Prerequisites
[Docker](https://www.docker.com/)
[Docker Compose](https://docs.docker.com/compose/overview/)
### Container Configuration
#### ports:
```
ports:
- "3307:3307" mariadb-port
- "8000:8000" webserver-port
- "11000:11000" redis-cache
- "12000:12000" redis-queue
- "13000:13000" redis-socketio
- "9000:9000" socketio-port
- "6787:6787" file-watcher-port
```
Expose port 3307 inside the container on port 3307 on ALL local host interfaces. In order to bind to only one interface, you may specify the host's IP address as `([<host_interface>:[host_port]])|(<host_port>):<container_port>[/udp]` as defined in the [docker port binding documentation](http://docs.docker.com/userguide/dockerlinks/). The port 3307 of the mariadb container and port 8000 of the frappe container is exposed to the host machine and other containers.
#### volumes:
```
volumes:
- ./frappe-bench:/home/frappe/frappe-bench
- ./conf/mariadb-conf.d:/etc/mysql/conf.d
- ./redis-conf/redis_socketio.conf:/etc/conf.d/redis.conf
- ./redis-conf/redis_queue.conf:/etc/conf.d/redis.conf
- ./redis-conf/redis_cache.conf:/etc/conf.d/redis.conf
```
Exposes a directory inside the host to the container.
#### links:
```
links:
- redis-cache
- redis-queue
- redis-socketio
- mariadb
```
Links allow you to define extra aliases by which a service is reachable from another service.
#### depends_on:
```
depends_on:
- mariadb
- redis-cache
- redis-queue
- redis-socketio
```
Express dependency between services, which has two effects:
1. docker-compose up will start services in dependency order. In the following example, mariadb and redis will be started before frappe.
2. docker-compose up SERVICE will automatically include SERVICEs dependencies. In the following example, docker-compose up docker_frappe will also create and start mariadb and redis.
### Installation
#### 1. Installation Pre-requisites
- Install [Docker](https://docs.docker.com/engine/installation) Community Edition
- Install [Docker Compose](https://docs.docker.com/compose/install/) (only for Linux users). Docker for Mac, Docker for Windows, and Docker Toolbox include Docker Compose
#### 2. Build the container and install bench
* Build the container and install bench inside the container.
1.Build the 5 linked containers frappe, mariadb, redis-cache, redis-queue and redis-socketio using this command. Make sure your current working directory is frappe_docker which contains the docker-compose.yml and Dockerfile.
It creates a user, frappe inside the frappe container, whose working directory is /home/frappe. It also clones
the bench-repo from [here](https://github.com/frappe/bench)
docker-compose up -d
Note: Please do not remove the bench-repo directory the above commands will create
#### Basic Usage
1. Starting docker containers
This command can be used to start containers
docker-compose start
2. Accessing the frappe container via CLI
docker exec -i -u root frappe bash -c "cd /home/frappe && chown -R frappe:frappe ./*"
docker exec -it frappe bash
3. Create a new bench
The init command will create a bench directory with frappe framework
installed. It will be setup for periodic backups and auto updates once
a day.
cd .. && bench init frappe-bench --skip-bench-mkdir --skip-redis-config-generation && cd frappe-bench
mv Procfile_docker Procfile && mv sites/common_site_config_docker.json sites/common_site_config.json
4. Set the db host for bench (points bench to the mariadb container) since the 3 containers are linked
bench set-mariadb-host mariadb
5. Add a site (make sure your current path is /home/frappe/frappe-bench)
Frappe apps are run by frappe sites and you will have to create at least one
site. The new-site command allows you to do that.
bench new-site site1.local
6. Add apps (make sure your current path is /home/frappe/frappe-bench)
The get-app command gets remote frappe apps from a remote git repository and installs them. Example: [erpnext](https://github.com/frappe/erpnext)
bench get-app erpnext https://github.com/frappe/erpnext
7. Install apps (make sure your current path is /home/frappe/frappe-bench)
To install an app on your new site, use the bench `install-app` command.
bench --site site1.local install-app erpnext
8. Start bench (make sure your current path is /home/frappe/frappe-bench)
To start using the bench, use the `bench start` command
bench start
9. Exiting the frappe container and stopping all the containers gracefully.
exit
docker-compose stop
10. Removing docker containers
docker-compose rm
11. Removing dangling volumes
The volume frappe on your local machine is shared by the host(your local machine) and the frappe container.
Please do not delete this volume from your local machine. Any changes made in this directory will reflect on both
the container and the host. The below command specifies how to remain dangling volumes which may be taking up
unecessary space on your host.
docker volume rm $(docker volume ls -f dangling=true -q)
To login to Frappe / ERPNext, open your browser and go to `[your-external-ip]:8000`, probably `localhost:8000`
The default username is "Administrator" and password is what you set when you created the new site.
## Built With
* [Docker](https://www.docker.com/)
## Contributing
Feel free to contribute to this project and make the container better
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

View File

@ -0,0 +1,32 @@
# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
#default-character-set = utf8
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
#character-set-server = utf8
#collation-server = utf8_general_ci
#character_set_server = utf8
#collation_server = utf8_general_ci
# Import all .cnf files from configuration directory
bind-address = 0.0.0.0
!includedir /etc/mysql/mariadb.conf.d/
[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4

View File

@ -0,0 +1,2 @@
[mysql]

View File

@ -0,0 +1,4 @@
[mysqld_safe]
skip_log_error
syslog

View File

@ -0,0 +1,5 @@
[mysqldump]
quick
quote-names
max_allowed_packet = 16M

View File

@ -0,0 +1,42 @@
#!/bin/bash
display_usage() {
echo "$(basename "$0") [-h] [-c \"<command to be executed inside container>\"]"
echo ''
echo 'where:'
echo ' -h show this help text'
echo ' -c execute a command inside docker using docker exec'
echo ' -s adds site-names to /etc/hosts file in the container to facilitate multisite access'
}
if [[ $# -eq 0 ]]; then
docker exec -it frappe bash
else
while getopts ':hsc:' option; do
case "$option" in
h)
display_usage
exit
;;
c)
docker exec frappe bash -c "bench $OPTARG"
;;
s)
a=$(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"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
fi

View File

@ -0,0 +1,64 @@
version: '2'
services:
mariadb:
image: "mariadb"
environment:
- MYSQL_ROOT_PASSWORD=123
- MYSQL_USER=root
volumes:
- ./conf/mariadb-conf.d:/etc/mysql/conf.d
ports:
- "3307:3307" #mariadb-port
container_name: mariadb
redis-cache:
image: redis:alpine
volumes:
- ./redis-conf/redis_cache.conf:/etc/conf.d/redis.conf
command: ["redis-server","/etc/conf.d/redis.conf"]
container_name: redis-cache
redis-queue:
image: redis:alpine
volumes:
- ./redis-conf/redis_queue.conf:/etc/conf.d/redis.conf
command: ["redis-server","/etc/conf.d/redis.conf"]
container_name: redis-queue
redis-socketio:
image: redis:alpine
volumes:
- ./redis-conf/redis_socketio.conf:/etc/conf.d/redis.conf
command: ["redis-server","/etc/conf.d/redis.conf"]
container_name: redis-socketio
frappe:
volumes:
- ./frappe-bench:/home/frappe/frappe-bench
build: .
ports:
- "8000:8000" #webserver_port
- "9000:9000" #socketio_port
- "6787:6787" #file_watcher_port
stdin_open: true
tty: true
links:
- redis-cache
- redis-queue
- redis-socketio
- mariadb
depends_on:
- mariadb
- redis-cache
- redis-queue
- redis-socketio
container_name: frappe

View File

@ -0,0 +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

View File

@ -0,0 +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"
}

View File

@ -0,0 +1 @@
20

View File

@ -0,0 +1 @@
24

View File

@ -0,0 +1 @@
29

View File

@ -0,0 +1,8 @@
dbfilename redis_cache.rdb
bind 0.0.0.0
port 13000
maxmemory 292mb
maxmemory-policy allkeys-lru
appendonly no
save ""

View File

@ -0,0 +1,3 @@
dbfilename redis_queue.rdb
bind 0.0.0.0
port 11000

View File

@ -0,0 +1,3 @@
dbfilename redis_socketio.rdb
bind 0.0.0.0
port 12000

View File

@ -0,0 +1,29 @@
import subprocess, requests, datetime, _thread, time, os, signal
start_time = datetime.datetime.now().time()
bench_start = 'docker exec -i frappe bash -c "bench start"'
process = subprocess.Popen(bench_start, stdout=subprocess.PIPE , shell=True)
def print_out(val,delay):
while 1:
time.sleep(delay)
if val == 1:
result,error = process.communicate()
print(result)
elif val == 2:
try:
global r
r = requests.get("http://site1.local:8000")
print(r)
except requests.exceptions.ConnectionError as e:
print(e)
_thread.start_new_thread(print_out, (1, 1))
#result, error = process.communicate()
_thread.start_new_thread(print_out, (2, 1))
time.sleep(30)
process.kill()
assert '<title> Login </title>' in str(r.content)

View File

@ -0,0 +1,26 @@
[program:mysqld]
command=/usr/bin/pidproxy /var/mysqld/mysqld.pid /usr/bin/mysqld_safe --pid-file=/var/run/mysqld/mysqld.pid
autostart=true
autorestart=true
user=root
[program:crond]
command=/usr/sbin/cron -f
process_name=cron
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=root
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
stdout_events_enabled=true
stderr_events_enabled=true