diff --git a/.travis.yml b/.travis.yml index de8802ae..ad032a8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,6 @@ dist: xenial env: - DOCKER_COMPOSE_VERSION: 1.23.1 - services: - docker @@ -20,11 +19,9 @@ before_install: install: - chmod ugo+x ./dbench - chmod ugo+x ./test.sh - - ./dbench setup docker - - ./dbench init frappe-bench - - ./dbench new-site site1.local - - ./dbench setup hosts + - ./dbench setup docker & + - sleep 8m script: - ./test.sh - - ./dbench setup docker stop + - ./dbench setup docker down diff --git a/Dockerfile b/Dockerfile index 1bf30b73..11fe3a2d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,11 @@ FROM debian:9.6-slim LABEL author=frappé + +# Add entrypoint +COPY ./docker-entrypoint.sh /bin/entrypoint + +# Install locales 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 \ @@ -16,31 +21,48 @@ ENV LC_ALL=en_US.UTF-8 # Install all neccesary packages 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 \ + 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 nginx python-dev python-pip python-setuptools python-tk redis-tools rlwrap \ + rlwrap software-properties-common sudo supervisor tk8.6-dev vim xfonts-75dpi xfonts-base wget wkhtmltopdf \ && apt-get clean && rm -rf /var/lib/apt/lists/* \ - && 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 groupadd -g 500 frappe \ + && wget https://deb.nodesource.com/node_10.x/pool/main/n/nodejs/nodejs_10.10.0-1nodesource1_amd64.deb -O node.deb \ + && dpkg -i node.deb && rm node.deb \ + && npm install -g yarn \ + && pip install -e git+https://github.com/frappe/bench.git#egg=bench --no-cache \ + && wget https://github.com/ncopa/su-exec/archive/dddd1567b7c76365e1e0aac561287975020a8fad.tar.gz -O - | tar xzv \ + && cd su-exec-* && make \ + && mv su-exec /usr/local/bin \ + && cd .. && rm -rf su-exec-* \ + && wget https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-amd64-v0.6.1.tar.gz -O - | tar xzv -C /usr/local/bin \ + && 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 + && chown -R 500:500 /home/frappe\ + && chmod 777 /bin/entrypoint +# ^^ Saves a layer -# Install bench -RUN pip install -e git+https://github.com/frappe/bench.git#egg=bench --no-cache +# Add templates +COPY --chown=500:500 ./frappe-templates /home/frappe/templates -USER frappe +EXPOSE 80 6787 8000 9000 -# Add some bench files -COPY --chown=frappe:frappe ./frappe-bench /home/frappe/frappe-bench +VOLUME [ "/home/frappe/frappe-bench" ] -WORKDIR /home/frappe/frappe-bench +ENV MYSQL_ROOT_PASSWORD="root" +ENV ADMIN_PASSWORD="admin" +ENV SITE_NAME="localhost" -EXPOSE 8000 9000 6787 +# These are here because you never know, people may want to change them (for some odd reason), so we need to set defaults. +ENV REDIS_CACHE_HOST="redis-cache" +ENV REDIS_QUEUE_HOST="redis-queue" +ENV REDIS_SOCKETIO_HOST="redis-socketio" +ENV MARIADB_HOST="mariadb" +ENV WEBSERVER_PORT="8000" +ENV SOCKETIO_PORT="9000" +ENV BENCH="/home/frappe/frappe-bench" +ENV DEV_MODE="false" -VOLUME [ "/home/frappe/frappe-bench" ] \ No newline at end of file +HEALTHCHECK --start-period=5m \ + CMD curl -f http://localhost || echo "Curl failure: $?" && exit 1 + +ENTRYPOINT [ "/bin/entrypoint" ] diff --git a/README.md b/README.md index a9efb466..a836fb0d 100644 --- a/README.md +++ b/README.md @@ -12,34 +12,25 @@ Unfortunately, this container is not curently suited for a production environmen ### Build the container and initialize the bench -**Note:** These instructions assume you have both [Docker](https://docs.docker.com/engine/installation) and [Docker Compose](https://docs.docker.com/compose/install/) installed on your system. +**Note:** These instructions assume you have both [Docker](https://docs.docker.com/engine/installation) and [Docker Compose](https://docs.docker.com/compose/install/) installed on your system. 1. Clone this repo and change your working directory to it: ```bash git clone https://github.com/frappe/frappe_docker.git - cd frappe_docker/ + cd frappe_docker ``` 2. Build and start the container, and initialize the bench: ```bash ./dbench setup docker - ./dbench init ``` - **Note:** This will take a while, as docker will now build the container. + **Note:** This will take a while, as docker will now build the container, and frappe will automaticly setup and start. please wait about 5-10 minutes before continuing. -3. Add a new site and start Frappe: - - ```bash - ./dbench new-site site1.local - ./dbench setup hosts - ./dbench start - ``` - -4. Use Frappe: - Open your browser to `localhost:8000/login`. Then login using the username `Administrator` and the password `admin`. +3. Use Frappe: + Open your browser to `localhost/login`. Then login using the username `Administrator` and the password `admin`. ### Basic Usage of `./dbench` @@ -51,8 +42,6 @@ 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. - **Note:** Run this after you've added a new site to avoid errors. - `./dbench -c frappe | root `: Runs a command in the container, as the selected user. @@ -60,10 +49,6 @@ Unfortunately, this container is not curently suited for a production environmen - `./dbench `: Runs a command in bench (i.e. Running `./dbench new-site site1.local`, will run `bench new-site site1.local` in the container). -## For More Info - -For more info on building this docker container refer to this [Wiki](https://github.com/frappe/frappe_docker/wiki/Hitchhiker's-guide-to-building-this-frappe_docker-image) - ## Contributing Feel free to contribute to this project and make it better. diff --git a/dbench b/dbench index 49bbc625..9b2365a2 100755 --- a/dbench +++ b/dbench @@ -8,10 +8,6 @@ function run () { if [[ $# -eq 0 ]]; then docker exec -it frappe bash -elif [[ "$1" == 'init' ]]; then - run root "chown -R frappe:frappe /home/frappe" - run frappe "cd .. && bench init frappe-bench --ignore-exist --skip-redis-config-generation && cd frappe-bench" - run frappe "mv Procfile_docker Procfile && mv sites/common_site_config_docker.json sites/common_site_config.json && bench set-mariadb-host mariadb" elif [[ "$1" == 'setup' ]]; then if [[ "$2" == 'docker' ]]; then if [[ "$3" == '--swarm-mode' ]]; then @@ -20,15 +16,12 @@ elif [[ "$1" == 'setup' ]]; then docker-compose down elif [[ "$3" == 'stop' ]]; then docker-compose stop - else + elif [[ "$3" == '-d' ]]; then docker-compose up -d + else + + docker-compose up fi - elif [[ "$2" == 'hosts' ]]; then - 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 -a /etc/hosts" else IFS=" " run frappe "bench $*" @@ -49,10 +42,11 @@ elif [[ "$1" == '-h' ]]; then echo " Launches you into an interactive shell in the container as user frappe" echo " $0 " echo " Runs the bench 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 setup docker [ -d | stop | down ]" + echo " Builds and starts the docker containers using \"docker-compose up\"" + echo " -d | Run containers in a detatched mode" + echo " stop | Stops containers" + echo " down | Deletes containers and assosiatated files (other than the files in volumes)." echo " $0 -c frappe | root " echo " Runs a command in the container, as the selected user" else diff --git a/docker-compose.yml b/docker-compose.yml index a24d2283..1c1f08d9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,18 +4,18 @@ services: image: mariadb environment: - - MYSQL_ROOT_PASSWORD=123 - - MYSQL_USER=root - + - MYSQL_ROOT_PASSWORD=root + volumes: - ./conf/mariadb-conf.d:/etc/mysql/conf.d - /var/lib/mysql - + ports: - "3307:3306" # MariaDB Port container_name: mariadb + redis-cache: image: redis:alpine @@ -26,6 +26,7 @@ services: container_name: redis-cache + redis-queue: image: redis:alpine @@ -37,6 +38,7 @@ services: container_name: redis-queue + redis-socketio: image: redis:alpine @@ -56,15 +58,14 @@ services: - ./conf/redis-conf.d/redis_cache.conf:/home/frappe/frappe-bench/config/redis_cache.conf - ./conf/redis-conf.d/redis_queue.conf:/home/frappe/frappe-bench/config/redis_queue.conf - ./conf/redis-conf.d/redis_socketio.conf:/home/frappe/frappe-bench/config/redis_socketio.conf - ports: - - "8000:8000" # Webserver Port - - "9000:9000" # Socketio Port - - "6787:6787" # File Watcher Port + - "8000:8000" # Webserver port + - "9000:9000" # Socketio port + - "6787:6787" # File Watcher port + - "80:80" # Nginx Port stdin_open: true tty: true - links: - redis-cache - redis-queue diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 00000000..fc66a36a --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +chown -R 500:500 "${BENCH}" + +# Setup bench +if [[ ! -d "${BENCH}/sites" ]]; then + su-exec frappe bench init "${BENCH}" --ignore-exist --skip-redis-config-generation --verbose +fi + +# Make sure Redis is up +dockerize -wait "tcp://${REDIS_CACHE_HOST}:13000" -wait "tcp://${REDIS_QUEUE_HOST}:11000" -wait "tcp://${REDIS_SOCKETIO_HOST}:12000" +# Make sure MariaDB is up +dockerize -wait "tcp://${MARIADB_HOST}:3306" + +# Individualy add bench config file +dockerize -template /home/frappe/templates/procfile.tmpl:${BENCH}/Procfile # Procfile +dockerize -template /home/frappe/templates/common_site_config.tmpl:${BENCH}/sites/common_site_config.json # common_site_config.json +dockerize -template /home/frappe/templates/nginx.tmpl:/etc/nginx/conf.d/frappe.conf # Nginx config for Frappe +dockerize -template /home/frappe/templates/supervisord.tmpl:/etc/supervisor/conf.d/frappe.conf # Supervisor config for Frappe Services + +cd "${BENCH}" || exit 1 + +# Add a site if its not there (useful if you're doing multitenancy) +if [[ ! -d "${BENCH}/sites/${SITE_NAME}" ]]; then + su-exec frappe bench new-site "${SITE_NAME}" --verbose +fi + +# Make sure frappe is built +su-exec frappe bench build + +# Print all configuration +function output () { + TITLE=$2 NAME=${3:-$(echo "$1" | grep -o '\([^\/\\]\+\.\w\+\)$')} awk 'BEGIN{print "\033[1;36m" ENVIRON["TITLE"] \ + ":\n\033[0;31m" ENVIRON["NAME"] "\t|\033[1;31m ------------------------------------------------------------------------\033[0m"} \ + {print "\033[0;31m" ENVIRON["NAME"] "\t| \033[0m" $0} END{print "\033[0;31m" \ + ENVIRON["NAME"] "\t|\033[1;31m ------------------------------------------------------------------------\033[0m\n"}' $1 +} + +echo -e "\n\033[1;36mConfiguration:" +output ${BENCH}/Procfile "Bench Procfile" +output ${BENCH}/sites/common_site_config.json "Bench Common Site Config" +output /etc/nginx/nginx.conf "Nginx config" +output /etc/nginx/conf.d/frappe.conf "Nginx frappe conf" +output /etc/supervisor/supervisord.conf "Supervisord config" +output /etc/supervisor/conf.d/frappe.conf "Supervisord frappe conf" + +trap "killall \"supervisord\"" HUP INT QUIT TERM + +# Start all services +exec supervisord diff --git a/frappe-bench/sites/common_site_config_docker.json b/frappe-bench/sites/common_site_config_docker.json deleted file mode 100644 index cdc9d198..00000000 --- a/frappe-bench/sites/common_site_config_docker.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "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/frappe-templates/common_site_config.tmpl b/frappe-templates/common_site_config.tmpl new file mode 100644 index 00000000..cf6ed9fd --- /dev/null +++ b/frappe-templates/common_site_config.tmpl @@ -0,0 +1,21 @@ +{ + "auto_update": false, + "background_workers": 1, + "db_host": "{{ default .Env.MARIADB_HOST "mariadb" }}", + "file_watcher_port": 6787, + "frappe_user": "frappe", + "gunicorn_workers": 4, + "rebase_on_pull": false, + "redis_cache": "redis://{{ default .Env.REDIS_CACHE_HOST "redis_cache" }}:13000", + "redis_queue": "redis://{{ default .Env.REDIS_QUEUE_HOST "redis_queue" }}:11000", + "redis_socketio": "redis://{{ default .Env.REDIS_SOCKETIO_HOST "redis_socketio" }}:12000", + "restart_supervisor_on_update": false, + "root_password": "{{ default .Env.MYSQL_ROOT_PASSWORD "root" }}", + "serve_default_site": true, + "shallow_clone": true, + "socketio_port": {{ default .Env.SOCKETIO_PORT "9000" }}, + "update_bench_on_update": true, + "webserver_port": {{ default .Env.WEBSERVER_PORT "8000" }}, + "admin_password": "{{ default .Env.ADMIN_PASSWORD "admin" }}", + "developer_mode": {{ default .Env.DEV_MODE "0" }} +} diff --git a/frappe-templates/nginx.tmpl b/frappe-templates/nginx.tmpl new file mode 100644 index 00000000..1ecec35d --- /dev/null +++ b/frappe-templates/nginx.tmpl @@ -0,0 +1,94 @@ +upstream frappe-bench-frappe { + server 127.0.0.1:{{ default .Env.WEBSERVER_PORT "8000" }} fail_timeout=0; +} + +upstream frappe-bench-socketio-server { + server 127.0.0.1:{{ default .Env.SOCKETIO_PORT "9000" }} fail_timeout=0; +} + +server { + listen 80; + server_name ~^.+$; + + root {{ default .Env.BENCH "/home/frappe/frappe-bench" }}/sites; + + + add_header X-Frame-Options "SAMEORIGIN"; + + location /assets { + alias {{ default .Env.BENCH "/home/frappe/frappe-bench" }}/sites/assets/; + try_files $uri =404; + } + + location ~ ^/protected/(.*) { + internal; + try_files /{{ default .Env.SITE_NAME "localhost" }}/$1 =404; + } + + location /socket.io { + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Frappe-Site-Name {{ default .Env.SITE_NAME "localhost" }}; + proxy_set_header Origin $scheme://$http_host; + proxy_set_header Host $host; + + proxy_pass http://frappe-bench-socketio-server; + } + + location / { + try_files /{{ default .Env.SITE_NAME "localhost" }}/public/$uri @webserver; + } + + location @webserver { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Frappe-Site-Name {{ default .Env.SITE_NAME "localhost" }}; + proxy_set_header Host $host; + proxy_set_header X-Use-X-Accel-Redirect True; + proxy_read_timeout 120; + proxy_redirect off; + + proxy_pass http://frappe-bench-frappe; + } + + # error pages + error_page 502 /502.html; + location /502.html { + root /home/frappe/src/bench/bench/config/templates; + internal; + } + + # optimizations + sendfile on; + keepalive_timeout 15; + client_max_body_size 50m; + client_body_buffer_size 16K; + client_header_buffer_size 1k; + + gzip on; + gzip_http_version 1.1; + gzip_comp_level 5; + gzip_min_length 256; + gzip_proxied any; + gzip_vary on; + gzip_types + application/atom+xml + application/javascript + application/json + application/rss+xml + application/vnd.ms-fontobject + application/x-font-ttf + application/font-woff + application/x-web-app-manifest+json + application/xhtml+xml + application/xml + font/opentype + image/svg+xml + image/x-icon + text/css + text/plain + text/x-component + ; +} + diff --git a/frappe-bench/Procfile_docker b/frappe-templates/procfile.tmpl similarity index 77% rename from frappe-bench/Procfile_docker rename to frappe-templates/procfile.tmpl index e2a5bd93..5d0aceb0 100644 --- a/frappe-bench/Procfile_docker +++ b/frappe-templates/procfile.tmpl @@ -1,4 +1,4 @@ -web: bench serve --port 8000 +web: bench serve --port {{ default .Env.WEBSERVER_PORT "8000" }} socketio: /usr/bin/node apps/frappe/socketio.js watch: bench watch diff --git a/frappe-templates/supervisord.tmpl b/frappe-templates/supervisord.tmpl new file mode 100644 index 00000000..cc75aba2 --- /dev/null +++ b/frappe-templates/supervisord.tmpl @@ -0,0 +1,109 @@ +; Notes: +; priority=1 --> Lower priorities indicate programs that start first and shut down last +; killasgroup=true --> send kill signal to child processes too + +[supervisord] +nodaemon=true + +[program:frappe-bench-nginx] +command=/usr/sbin/nginx -g "daemon off;" +priority=900 +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 +username=frappe +autorestart=true + +[program:frappe-bench-frappe-web] +command={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/env/bin/gunicorn -b 127.0.0.1:{{ default .Env.WEBSERVER_PORT "8000" }} -w 4 -t 120 frappe.app:application --preload +priority=4 +autostart=true +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/web.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/web.error.log +user=frappe +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/sites + + +[program:frappe-bench-frappe-schedule] +command=/usr/local/bin/bench schedule +priority=3 +autostart=true +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/schedule.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/schedule.error.log +user=frappe +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }} + +[program:frappe-bench-frappe-default-worker] +command=/usr/local/bin/bench worker --queue default +priority=4 +autostart=true +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/worker.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/worker.error.log +user=frappe +stopwaitsecs=156 +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }} +killasgroup=true +numprocs=1 +process_name=%(program_name)s-%(process_num)d + +[program:frappe-bench-frappe-short-worker] +command=/usr/local/bin/bench worker --queue short +priority=4 +autostart=true +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/worker.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/worker.error.log +user=frappe +stopwaitsecs=360 +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }} +killasgroup=true +numprocs=1 +process_name=%(program_name)s-%(process_num)d + +[program:frappe-bench-frappe-long-worker] +command=/usr/local/bin/bench worker --queue long +priority=4 +autostart=true +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/worker.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/worker.error.log +user=frappe +stopwaitsecs=1560 +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }} +killasgroup=true +numprocs=1 +process_name=%(program_name)s-%(process_num)d + + +[program:frappe-bench-node-socketio] +command=/usr/bin/node {{ default .Env.BENCH "/home/frappe/frappe-bench" }}/apps/frappe/socketio.js +priority=4 +autostart=true +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/node-socketio.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/node-socketio.error.log +user=frappe +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }} + + +[program:frappe-bench-watch] +command=/usr/local/bin/bench watch +priority=4 +autostart={{ default .Env.DEV_MODE "false" }} +autorestart=true +stdout_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/watch.log +stderr_logfile={{ default .Env.BENCH "/home/frappe/frappe-bench" }}/logs/watch.error.log +user=frappe +directory={{ default .Env.BENCH "/home/frappe/frappe-bench" }} + + +[group:frappe-bench-web] +programs=frappe-bench-frappe-web,frappe-bench-node-socketio,frappe-bench-nginx,frappe-bench-watch + + +[group:frappe-bench-workers] +programs=frappe-bench-frappe-schedule,frappe-bench-frappe-default-worker,frappe-bench-frappe-short-worker,frappe-bench-frappe-long-worker diff --git a/test.sh b/test.sh index 86b591e5..28ba4b15 100644 --- a/test.sh +++ b/test.sh @@ -6,11 +6,10 @@ docker container ls | grep redis-cache docker container ls | grep redis-queue docker container ls | grep redis-socketio -cat <(./dbench start) & while ! [[ $i == 20 ]] do - output=$( curl "http://localhost:8000" ) + output=$( curl "http://localhost" ) { echo "Exit status of curl: $?" } 1>&2 sleep 2