From 568683dbf8a844d002690105803ca7dd6dc03f01 Mon Sep 17 00:00:00 2001 From: Nathan Rzepecki Date: Sun, 6 Sep 2020 15:48:11 +0800 Subject: [PATCH 01/27] Remove the auth list. see the caddy docks if needed --- caddy/caddy/authlist.conf | 1 - 1 file changed, 1 deletion(-) delete mode 100644 caddy/caddy/authlist.conf diff --git a/caddy/caddy/authlist.conf b/caddy/caddy/authlist.conf deleted file mode 100644 index 651bf55..0000000 --- a/caddy/caddy/authlist.conf +++ /dev/null @@ -1 +0,0 @@ -basicauth / laradock laradock From 283ea64fbf19c62ad710a9136f7ab1cc86208a27 Mon Sep 17 00:00:00 2001 From: Nathan Rzepecki Date: Sun, 6 Sep 2020 15:48:43 +0800 Subject: [PATCH 02/27] Update the Dockerfile to use the official caddy2 docker images --- caddy/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/caddy/Dockerfile b/caddy/Dockerfile index c9b74b7..e2af8fd 100644 --- a/caddy/Dockerfile +++ b/caddy/Dockerfile @@ -1,5 +1,5 @@ -FROM abiosoft/caddy:no-stats +FROM caddy/caddy:latest -CMD ["--conf", "/etc/caddy/Caddyfile", "--log", "stdout", "--agree=true"] +COPY ./caddy/Caddyfile /etc/caddy/Caddyfile -EXPOSE 80 443 2015 +EXPOSE 80 443 From 6a48af77304f7349ce4391cd06ba250d7187f1c2 Mon Sep 17 00:00:00 2001 From: Nathan Rzepecki Date: Sun, 6 Sep 2020 15:49:23 +0800 Subject: [PATCH 03/27] Update the Caddyfile to serve a simple https local environment --- caddy/caddy/Caddyfile | 54 +++++-------------------------------------- 1 file changed, 6 insertions(+), 48 deletions(-) diff --git a/caddy/caddy/Caddyfile b/caddy/caddy/Caddyfile index 1848d34..2fab010 100644 --- a/caddy/caddy/Caddyfile +++ b/caddy/caddy/Caddyfile @@ -1,51 +1,9 @@ # Docs: https://caddyserver.com/docs/caddyfile -0.0.0.0:80 { - root /var/www/public - fastcgi / php-fpm:9000 php { - index index.php - } +laradock.test { + root * /var/www/public + php_fastcgi php-fpm:9000 + file_server - # To handle .html extensions with laravel change ext to - # ext / .html - - rewrite { - to {path} {path}/ /index.php?{query} - } - gzip - browse - log /var/log/caddy/access.log - errors /var/log/caddy/error.log - # Uncomment to enable TLS (HTTPS) - # Change the first list to listen on port 443 when enabling TLS - #tls self_signed - - # To use Lets encrpt tls with a DNS provider uncomment these - # lines and change the provider as required - #tls { - # dns cloudflare - #} + encode gzip + tls internal } - -laradock1.demo:80 { - root /var/www/public - # Create a Webhook in git. - #git { - #repo https://github.com/xxx/xxx - # path /home/xxx - # #interval 60 - # hook webhook laradock - # hook_type generic - #} - -} - -laradock2.demo:80 { - # Create a Proxy and cors. - #proxy domain.com - #cors -} - -laradock3.demo:80 { - import authlist.conf - root /var/www/public -} \ No newline at end of file From 898434b59e514dfdd4a5c1cc8cfb56623a604ffe Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 12 Jun 2021 20:49:45 +0800 Subject: [PATCH 04/27] add php ssdb extension --- .env.example | 3 +++ docker-compose.yml | 5 ++++- php-fpm/Dockerfile | 28 ++++++++++++++++++++++++++++ php-worker/Dockerfile | 28 ++++++++++++++++++++++++++++ workspace/Dockerfile | 27 +++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 13b7ae8..69ea68b 100644 --- a/.env.example +++ b/.env.example @@ -199,6 +199,7 @@ WORKSPACE_INSTALL_LNAV=false WORKSPACE_INSTALL_PROTOC=false WORKSPACE_INSTALL_PHPDECIMAL=false WORKSPACE_INSTALL_ZOOKEEPER=false +WORKSPACE_INSTALL_SSDB=false WORKSPACE_PROTOC_VERSION=latest WORKSPACE_INSTALL_MEMCACHED=true @@ -262,6 +263,7 @@ PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false PHP_FPM_INSTALL_PHPDECIMAL=false PHP_FPM_INSTALL_ZOOKEEPER=false +PHP_FPM_INSTALL_SSDB=false PHP_FPM_FFMPEG=false PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" @@ -308,6 +310,7 @@ PHP_WORKER_INSTALL_GEARMAN=false PHP_WORKER_INSTALL_REDIS=false PHP_WORKER_INSTALL_IMAP=false PHP_WORKER_INSTALL_XMLRPC=false +PHP_WORKER_INSTALL_SSDB=false PHP_WORKER_PUID=1000 PHP_WORKER_PGID=1000 diff --git a/docker-compose.yml b/docker-compose.yml index f28bc4c..10d3f43 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -167,6 +167,7 @@ services: - INSTALL_PROTOC=${WORKSPACE_INSTALL_PROTOC} - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL} - INSTALL_ZOOKEEPER=${WORKSPACE_INSTALL_ZOOKEEPER} + - INSTALL_SSDB=${WORKSPACE_INSTALL_SSDB} - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - INSTALL_MEMCACHED=${WORKSPACE_INSTALL_MEMCACHED} @@ -267,6 +268,7 @@ services: - INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC} - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL} - INSTALL_ZOOKEEPER=${PHP_FPM_INSTALL_ZOOKEEPER} + - INSTALL_SSDB=${PHP_FPM_INSTALL_SSDB} - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} @@ -337,6 +339,7 @@ services: - INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS} - INSTALL_IMAP=${PHP_WORKER_INSTALL_IMAP} - INSTALL_XMLRPC=${PHP_WORKER_INSTALL_XMLRPC} + - INSTALL_SSDB=${PHP_WORKER_INSTALL_SSDB} - PUID=${PHP_WORKER_PUID} - PGID=${PHP_WORKER_PGID} - IMAGEMAGICK_VERSION=${PHP_WORKER_IMAGEMAGICK_VERSION} @@ -2003,4 +2006,4 @@ services: ports: - ${TARANTOOL_ADMIN_PORT}:80 networks: - - backend \ No newline at end of file + - backend diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 8e76428..e321b81 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1138,6 +1138,34 @@ RUN if [ ${NEW_RELIC} = true ]; then \ -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \ /usr/local/etc/php/conf.d/newrelic.ini \ ;fi + +########################################################################### +# PHP SSDB: +########################################################################### + +USER root + +ARG INSTALL_SSDB=false + +RUN set -xe; \ + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + && php -m | grep -r 'ssdb'; \ +;fi ########################################################################### # Downgrade Openssl: ########################################################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index b901770..ea86d5a 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -422,6 +422,34 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ php -m | grep -r 'memcached'; \ fi +########################################################################### +# PHP SSDB: +########################################################################### + +USER root + +ARG INSTALL_SSDB=false + +RUN set -xe; \ + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + && php -m | grep -r 'ssdb'; \ +;fi + # #-------------------------------------------------------------------------- # Optional Supervisord Configuration diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 64deb56..5dc435e 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1649,6 +1649,33 @@ RUN set -eux; \ php -m | grep -q 'zookeeper'; \ fi +########################################################################### +# PHP SSDB: +########################################################################### + +USER root + +ARG INSTALL_SSDB=false + +RUN set -xe; \ + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + && php -m | grep -r 'ssdb'; \ +;fi # #-------------------------------------------------------------------------- # Final Touch From 0b6c26674423cd3d4e46e4064c364179cafb7bf0 Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 12 Jun 2021 21:28:43 +0800 Subject: [PATCH 05/27] fix bug --- php-fpm/Dockerfile | 1 - php-worker/Dockerfile | 1 - workspace/Dockerfile | 1 - 3 files changed, 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index e321b81..7843cbf 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1164,7 +1164,6 @@ RUN set -xe; \ && make install \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ - && php -m | grep -r 'ssdb'; \ ;fi ########################################################################### # Downgrade Openssl: diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index ea86d5a..cf4d6d6 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -447,7 +447,6 @@ RUN set -xe; \ && make install \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ - && php -m | grep -r 'ssdb'; \ ;fi # diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 5dc435e..c9c777c 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1674,7 +1674,6 @@ RUN set -xe; \ && make install \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ - && php -m | grep -r 'ssdb'; \ ;fi # #-------------------------------------------------------------------------- From e0a88ac3711b40102697a612e82075d680261924 Mon Sep 17 00:00:00 2001 From: Larry Date: Wed, 23 Jun 2021 22:56:12 +0800 Subject: [PATCH 06/27] add openresty and ssdb --- docker-compose.yml | 37 +++- openresty/Dockerfile | 211 +++++++++++++++++++ openresty/logrotate/nginx | 14 ++ openresty/nginx.conf | 100 +++++++++ openresty/sites/.gitignore | 2 + openresty/sites/app.conf.example | 43 ++++ openresty/sites/confluence.conf.example | 43 ++++ openresty/sites/default.conf | 40 ++++ openresty/sites/laravel.conf.example | 49 +++++ openresty/sites/laravel_varnish.conf.example | 110 ++++++++++ openresty/sites/node.conf.example | 47 +++++ openresty/sites/symfony.conf.example | 42 ++++ openresty/ssl/.gitignore | 4 + openresty/startup.sh | 14 ++ ssdb/Dockerfile | 22 ++ ssdb/ssdb.conf | 52 +++++ 16 files changed, 829 insertions(+), 1 deletion(-) create mode 100644 openresty/Dockerfile create mode 100644 openresty/logrotate/nginx create mode 100644 openresty/nginx.conf create mode 100644 openresty/sites/.gitignore create mode 100644 openresty/sites/app.conf.example create mode 100644 openresty/sites/confluence.conf.example create mode 100644 openresty/sites/default.conf create mode 100644 openresty/sites/laravel.conf.example create mode 100644 openresty/sites/laravel_varnish.conf.example create mode 100644 openresty/sites/node.conf.example create mode 100644 openresty/sites/symfony.conf.example create mode 100644 openresty/ssl/.gitignore create mode 100644 openresty/startup.sh create mode 100644 ssdb/Dockerfile create mode 100644 ssdb/ssdb.conf diff --git a/docker-compose.yml b/docker-compose.yml index 10d3f43..6d90923 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,6 @@ networks: driver: ${NETWORKS_DRIVER} backend: driver: ${NETWORKS_DRIVER} - volumes: mysql: driver: ${VOLUMES_DRIVER} @@ -415,6 +414,32 @@ services: - frontend - backend +### OpenResty Server ######################################### + openresty: + build: + context: ./openresty + args: + - CHANGE_SOURCE=${CHANGE_SOURCE} + - PHP_UPSTREAM_CONTAINER=${OPENRESTY_PHP_UPSTREAM_CONTAINER} + - PHP_UPSTREAM_PORT=${OPENRESTY_PHP_UPSTREAM_PORT} + - http_proxy + - https_proxy + - no_proxy + volumes: + - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} + - ${OPENRESTY_HOST_LOG_PATH}:/var/log/nginx + - ${OPENRESTY_SITES_PATH}:/etc/nginx/sites-available + - ${OPENRESTY_SSL_PATH}:/etc/nginx/ssl + ports: + - "${OPENRESTY_HOST_HTTP_PORT}:80" + - "${OPENRESTY_HOST_HTTPS_PORT}:443" + - "${VARNISH_BACKEND_PORT}:81" + depends_on: + - php-fpm + networks: + - frontend + - backend + ### Blackfire ######################################## blackfire: image: blackfire/blackfire @@ -694,6 +719,16 @@ services: - "${REDIS_CLUSTER_PORT_RANGE}:7000-7005" networks: - backend +### SSDB ################################################ + ssdb: + build: ./ssdb + volumes: + - ${DATA_PATH_HOST}/ssdb:/data + ports: + - "${SSDB_PORT}:8888" + dns: 172.17.0.1 + networks: + - backend ### ZooKeeper ######################################### zookeeper: diff --git a/openresty/Dockerfile b/openresty/Dockerfile new file mode 100644 index 0000000..8a045ab --- /dev/null +++ b/openresty/Dockerfile @@ -0,0 +1,211 @@ +# Dockerfile - alpine +# https://github.com/openresty/docker-openresty + +ARG RESTY_IMAGE_BASE="alpine" +ARG RESTY_IMAGE_TAG="3.13" + +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} + +LABEL maintainer="Evan Wies " + +# Docker Build Arguments +ARG RESTY_IMAGE_BASE="alpine" +ARG RESTY_IMAGE_TAG="3.13" +ARG RESTY_VERSION="1.19.3.2" +ARG RESTY_OPENSSL_VERSION="1.1.1k" +ARG RESTY_OPENSSL_PATCH_VERSION="1.1.1f" +ARG RESTY_OPENSSL_URL_BASE="https://www.openssl.org/source" +ARG RESTY_PCRE_VERSION="8.44" +ARG RESTY_J="1" +ARG RESTY_CONFIG_OPTIONS="\ + --with-compat \ + --with-file-aio \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_geoip_module=dynamic \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_image_filter_module=dynamic \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_secure_link_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_stub_status_module \ + --with-http_sub_module \ + --with-http_v2_module \ + --with-http_xslt_module=dynamic \ + --with-ipv6 \ + --with-mail \ + --with-mail_ssl_module \ + --with-md5-asm \ + --with-pcre-jit \ + --with-sha1-asm \ + --with-stream \ + --with-stream_ssl_module \ + --with-threads \ + " +ARG RESTY_CONFIG_OPTIONS_MORE="\ + --conf-path=/etc/nginx/nginx.conf \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --pid-path=/var/run/nginx.pid \ + --user=www-data \ + --group=www-data \ + --with-http_iconv_module \ + --add-module=/tmp/nginx-ct-master \ + --add-module=/tmp/nginx-dav-ext-module-master \ + --add-module=/tmp/ngx_brotli \ + --add-module=/tmp/ngx_cache_purge-master \ + --add-module=/tmp/ngx_http_substitutions_filter_module-master \ + " +ARG RESTY_LUAJIT_OPTIONS="--with-luajit-xcflags='-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT'" + +ARG RESTY_ADD_PACKAGE_BUILDDEPS="" +ARG RESTY_ADD_PACKAGE_RUNDEPS="" +ARG RESTY_EVAL_PRE_CONFIGURE="" +ARG RESTY_EVAL_POST_MAKE="" + +# These are not intended to be user-specified +ARG _RESTY_CONFIG_DEPS="--with-pcre \ + --with-cc-opt='-DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl/include' \ + --with-ld-opt='-L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl/lib -Wl,-rpath,/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl/lib' \ + " + +LABEL resty_image_base="${RESTY_IMAGE_BASE}" +LABEL resty_image_tag="${RESTY_IMAGE_TAG}" +LABEL resty_version="${RESTY_VERSION}" +LABEL resty_openssl_version="${RESTY_OPENSSL_VERSION}" +LABEL resty_openssl_patch_version="${RESTY_OPENSSL_PATCH_VERSION}" +LABEL resty_openssl_url_base="${RESTY_OPENSSL_URL_BASE}" +LABEL resty_pcre_version="${RESTY_PCRE_VERSION}" +LABEL resty_config_options="${RESTY_CONFIG_OPTIONS}" +LABEL resty_config_options_more="${RESTY_CONFIG_OPTIONS_MORE}" +LABEL resty_config_deps="${_RESTY_CONFIG_DEPS}" +LABEL resty_add_package_builddeps="${RESTY_ADD_PACKAGE_BUILDDEPS}" +LABEL resty_add_package_rundeps="${RESTY_ADD_PACKAGE_RUNDEPS}" +LABEL resty_eval_pre_configure="${RESTY_EVAL_PRE_CONFIGURE}" +LABEL resty_eval_post_make="${RESTY_EVAL_POST_MAKE}" + +ARG CHANGE_SOURCE=false +RUN if [ ${CHANGE_SOURCE} = true ]; then \ + # Change application source from dl-cdn.alpinelinux.org to aliyun source + sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \ +;fi + +RUN set -x ; \ + addgroup -g 82 -S www-data ; \ + adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1 + + +RUN apk add --no-cache --virtual .build-deps \ + build-base \ + coreutils \ + curl \ + gd-dev \ + geoip-dev \ + libxslt-dev \ + linux-headers \ + make \ + perl-dev \ + readline-dev \ + zlib-dev \ + ${RESTY_ADD_PACKAGE_BUILDDEPS} \ + && apk add --no-cache \ + gd \ + geoip \ + libgcc \ + libxslt \ + zlib \ + bash \ + logrotate \ + openssl \ + ${RESTY_ADD_PACKAGE_RUNDEPS} \ + && cd /tmp \ + && if [ -n "${RESTY_EVAL_PRE_CONFIGURE}" ]; then eval $(echo ${RESTY_EVAL_PRE_CONFIGURE}); fi \ + && cd /tmp \ + && curl -fSL "${RESTY_OPENSSL_URL_BASE}/openssl-${RESTY_OPENSSL_VERSION}.tar.gz" -o openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ + && tar xzf openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ + && cd openssl-${RESTY_OPENSSL_VERSION} \ + && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.1" ] ; then \ + echo 'patching OpenSSL 1.1.1 for OpenResty' \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \ + fi \ + && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.0" ] ; then \ + echo 'patching OpenSSL 1.1.0 for OpenResty' \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/ed328977028c3ec3033bc25873ee360056e247cd/patches/openssl-1.1.0j-parallel_build_fix.patch | patch -p1 \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \ + fi \ + && ./config \ + no-threads shared zlib -g \ + enable-ssl3 enable-ssl3-method \ + --prefix=/usr/local/openresty/openssl \ + --libdir=lib \ + -Wl,-rpath,/usr/local/openresty/openssl/lib \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install_sw \ + && cd /tmp \ + && curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && cd /tmp/pcre-${RESTY_PCRE_VERSION} \ + && ./configure \ + --prefix=/usr/local/openresty/pcre \ + --disable-cpp \ + --enable-jit \ + --enable-utf \ + --enable-unicode-properties \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install \ + && cd /tmp \ + && curl -fSL https://openresty.org/download/openresty-${RESTY_VERSION}.tar.gz -o openresty-${RESTY_VERSION}.tar.gz \ + && tar xzf openresty-${RESTY_VERSION}.tar.gz \ + && curl -fSL https://github.com/grahamedgecombe/nginx-ct/archive/master.tar.gz -o nginx-ct.tar.gz \ + && tar xzf nginx-ct.tar.gz \ + && curl -fSL https://github.com/arut/nginx-dav-ext-module/archive/master.tar.gz -o nginx-dav-ext-module.tar.gz \ + && tar xzf nginx-dav-ext-module.tar.gz \ + && curl -fSL https://www.downsoft.cn/software/linux/nginx/ngx_brotli.tar.gz -o ngx_brotli.tar.gz \ + && tar xzf ngx_brotli.tar.gz \ + && curl -fSL https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.tar.gz -o ngx_http_substitutions_filter_module.tar.gz \ + && tar xzf ngx_http_substitutions_filter_module.tar.gz \ + && curl -fSL https://github.com/FRiCKLE/ngx_cache_purge/archive/master.tar.gz -o ngx_cache_purge.tar.gz \ + && tar xzf ngx_cache_purge.tar.gz \ + && cd /tmp/openresty-${RESTY_VERSION} \ + && eval ./configure -j${RESTY_J} ${_RESTY_CONFIG_DEPS} ${RESTY_CONFIG_OPTIONS} ${RESTY_CONFIG_OPTIONS_MORE} ${RESTY_LUAJIT_OPTIONS} \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install \ + && cd /tmp \ + && if [ -n "${RESTY_EVAL_POST_MAKE}" ]; then eval $(echo ${RESTY_EVAL_POST_MAKE}); fi \ + && rm -rf \ + openssl-${RESTY_OPENSSL_VERSION}.tar.gz openssl-${RESTY_OPENSSL_VERSION} \ + pcre-${RESTY_PCRE_VERSION}.tar.gz pcre-${RESTY_PCRE_VERSION} \ + openresty-${RESTY_VERSION}.tar.gz openresty-${RESTY_VERSION} \ + && apk del .build-deps \ + && mkdir -p /etc/nginx/conf.d/ /var/run/openresty/ + +# Add additional binaries into PATH for convenience +ENV PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin + + +ARG PHP_UPSTREAM_CONTAINER=php-fpm +ARG PHP_UPSTREAM_PORT=9000 + +# Create 'messages' file used from 'logrotate' +RUN touch /var/log/messages + +# Copy 'logrotate' config file +COPY logrotate/nginx /etc/logrotate.d/ + +# Set upstream conf and remove the default conf +RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf + +# Copy nginx configuration files +COPY nginx.conf /etc/nginx/ + +ADD ./startup.sh /opt/startup.sh +RUN sed -i 's/\r//g' /opt/startup.sh +CMD ["/bin/bash", "/opt/startup.sh"] + +EXPOSE 80 81 443 diff --git a/openresty/logrotate/nginx b/openresty/logrotate/nginx new file mode 100644 index 0000000..8c89a83 --- /dev/null +++ b/openresty/logrotate/nginx @@ -0,0 +1,14 @@ +/var/log/nginx/*.log { + daily + missingok + rotate 32 + compress + delaycompress + nodateext + notifempty + create 644 www-data root + sharedscripts + postrotate + [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` + endscript +} diff --git a/openresty/nginx.conf b/openresty/nginx.conf new file mode 100644 index 0000000..a249496 --- /dev/null +++ b/openresty/nginx.conf @@ -0,0 +1,100 @@ +# nginx.conf -- docker-openresty +# +# This file is installed to: +# `/usr/local/openresty/nginx/conf/nginx.conf` +# and is the file loaded by nginx at startup, +# unless the user specifies otherwise. +# +# It tracks the upstream OpenResty's `nginx.conf`, but removes the `server` +# section and adds this directive: +# `include /etc/nginx/conf.d/*.conf;` +# +# The `docker-openresty` file `nginx.vh.default.conf` is copied to +# `/etc/nginx/conf.d/default.conf`. It contains the `server section +# of the upstream `nginx.conf`. +# +# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files +# + +user www-data; +worker_processes 4; + +# Enables the use of JIT for regular expressions to speed-up their processing. +pcre_jit on; + + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +pid /var/run/nginx.pid; +daemon off; + +worker_rlimit_nofile 65535; +events { + use epoll; + worker_connections 65535; + multi_accept on; + accept_mutex on; +} + +http { + include mime.types; + default_type application/octet-stream; + + # Enables or disables the use of underscores in client request header fields. + # When the use of underscores is disabled, request header fields whose names contain underscores are marked as invalid and become subject to the ignore_invalid_headers directive. + # underscores_in_headers off; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for" "$host"'; + #access_log logs/access.log main; + + # Log in JSON Format + # log_format nginxlog_json escape=json '{ "timestamp": "$time_iso8601", ' + # '"remote_addr": "$remote_addr", ' + # '"body_bytes_sent": $body_bytes_sent, ' + # '"request_time": $request_time, ' + # '"response_status": $status, ' + # '"request": "$request", ' + # '"request_method": "$request_method", ' + # '"host": "$host",' + # '"upstream_addr": "$upstream_addr",' + # '"http_x_forwarded_for": "$http_x_forwarded_for",' + # '"http_referrer": "$http_referer", ' + # '"http_user_agent": "$http_user_agent", ' + # '"http_version": "$server_protocol", ' + # '"nginx_access": true }'; + # access_log /dev/stdout nginxlog_json; + + # See Move default writable paths to a dedicated directory (#119) + # https://github.com/openresty/docker-openresty/issues/119 + client_body_temp_path /var/run/openresty/nginx-client-body; + proxy_temp_path /var/run/openresty/nginx-proxy; + fastcgi_temp_path /var/run/openresty/nginx-fastcgi; + uwsgi_temp_path /var/run/openresty/nginx-uwsgi; + scgi_temp_path /var/run/openresty/nginx-scgi; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + + #keepalive_timeout 0; + keepalive_timeout 65; + types_hash_max_size 2048; + client_max_body_size 128M; + + gzip on; + gzip_disable "msie6"; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-available/*.conf; + + # Don't reveal OpenResty version to clients. + server_tokens off; + charset UTF-8; +} diff --git a/openresty/sites/.gitignore b/openresty/sites/.gitignore new file mode 100644 index 0000000..f5d67af --- /dev/null +++ b/openresty/sites/.gitignore @@ -0,0 +1,2 @@ +*.conf +!default.conf \ No newline at end of file diff --git a/openresty/sites/app.conf.example b/openresty/sites/app.conf.example new file mode 100644 index 0000000..a0f8357 --- /dev/null +++ b/openresty/sites/app.conf.example @@ -0,0 +1,43 @@ +server { + + listen 80; + listen [::]:80; + + # For https + # listen 443 ssl; + # listen [::]:443 ssl ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name app.test; + root /var/www/app; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/app_error.log; + access_log /var/log/nginx/app_access.log; +} diff --git a/openresty/sites/confluence.conf.example b/openresty/sites/confluence.conf.example new file mode 100644 index 0000000..f804956 --- /dev/null +++ b/openresty/sites/confluence.conf.example @@ -0,0 +1,43 @@ +server { + listen 80; + listen [::]:80; + server_name www.confluence-domain.com; + rewrite ^(.*) https://confluence-domain.com$1/ permanent; +} + +server { + listen 80; + listen [::]:80; + server_name confluence-domain.com; + rewrite ^(.*) https://confluence-domain.com/ permanent; +} + +server { + listen 443 ssl; + listen [::]:443 ssl; + ssl_certificate /etc/nginx/ssl/confluence-domain.com.crt; + ssl_certificate_key /etc/nginx/ssl/confluence-domain.com.key; + + server_name confluence-domain.com; + + location / { + client_max_body_size 100m; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Server $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://confluence-domain.com:8090/; + } + + location /synchrony { + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Server $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://confluence-domain.com:8090/synchrony-proxy; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + error_log /var/log/nginx/bookchangerru_error.log; + access_log /var/log/nginx/bookchangerru_access.log; +} diff --git a/openresty/sites/default.conf b/openresty/sites/default.conf new file mode 100644 index 0000000..56b7a10 --- /dev/null +++ b/openresty/sites/default.conf @@ -0,0 +1,40 @@ +server { + + listen 80 default_server; + listen [::]:80 default_server ipv6only=on; + + # For https + # listen 443 ssl default_server; + # listen [::]:443 ssl default_server ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name localhost; + root /opt/www/default; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } +} diff --git a/openresty/sites/laravel.conf.example b/openresty/sites/laravel.conf.example new file mode 100644 index 0000000..c9ba2d9 --- /dev/null +++ b/openresty/sites/laravel.conf.example @@ -0,0 +1,49 @@ +#server { +# listen 80; +# server_name laravel.com.co; +# return 301 https://laravel.com.co$request_uri; +#} + +server { + + listen 80; + listen [::]:80; + + # For https + # listen 443 ssl; + # listen [::]:443 ssl ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name laravel.test; + root /var/www/laravel/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/laravel_error.log; + access_log /var/log/nginx/laravel_access.log; +} diff --git a/openresty/sites/laravel_varnish.conf.example b/openresty/sites/laravel_varnish.conf.example new file mode 100644 index 0000000..7d54587 --- /dev/null +++ b/openresty/sites/laravel_varnish.conf.example @@ -0,0 +1,110 @@ +server { + listen 80; + listen [::]:80; + server_name www.laravel.test; + rewrite ^(.*) https://laravel.test$1/ permanent; +} + +server { + listen 80; + listen [::]:80; + server_name laravel.test; + rewrite ^(.*) https://laravel.test$1/ permanent; +} + +server { + listen 443 ssl ; + listen [::]:443 ssl; + ssl_certificate /etc/nginx/ssl/laravel.test.crt; + ssl_certificate_key /etc/nginx/ssl/laravel.test.key; + server_name www.laravel.test; + rewrite ^(.*) https://laravel.test$1/ permanent; +} + +server { + server_name laravel.test; + + # For https + listen 443 ssl ; + listen [::]:443 ssl; + ssl_certificate /etc/nginx/ssl/laravel.test.crt; + ssl_certificate_key /etc/nginx/ssl/laravel.test.key; + + port_in_redirect off; + + add_header Strict-Transport-Security "max-age=31536000"; + add_header X-Content-Type-Options nosniff; + + location / { + proxy_pass http://proxy:6081; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header HTTPS "on"; + proxy_redirect off; + } +} + +server { + server_name laravel.test; + + listen 81; + listen [::]:81; + + root /var/www/laravel.test/www; + + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + fastcgi_max_temp_file_size 4m; + fastcgi_pass php-upstream; + + # Additional configs + fastcgi_pass_header Set-Cookie; + fastcgi_pass_header Cookie; + fastcgi_ignore_headers Cache-Control Expires Set-Cookie; + try_files $uri /index.php =404; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; + fastcgi_param HTTPS on; + + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + + fastcgi_intercept_errors on; + + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + # Caching + location ~* \.(ico|jpg|webp|jpeg|gif|css|png|js|ico|bmp|zip|woff)$ { + access_log off; + log_not_found off; + add_header Pragma public; + add_header Cache-Control "public"; + expires 14d; + } + + location ~* \.(php|html)$ { + access_log on; + log_not_found on; + add_header Pragma public; + add_header Cache-Control "public"; + expires 14d; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/openresty/sites/node.conf.example b/openresty/sites/node.conf.example new file mode 100644 index 0000000..6fe0c75 --- /dev/null +++ b/openresty/sites/node.conf.example @@ -0,0 +1,47 @@ +#server { +# listen 80; +# server_name node.com.co; +# return 301 https://node.com.co$request_uri; +#} + +server { + + listen 80; + listen [::]:80; + + #listen 443; + #listen [::]:443; + + server_name node.com.co; + + #ssl on; + #ssl_certificate /var/certs/node.com.co/cert.pem; + #ssl_certificate_key /var/certs/node.com.co/privkey.pem; + #ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; + #ssl_ciphers HIGH:!aNULL:!MD5; + + + location / { + proxy_pass http://node.com.co:3001; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_cache_bypass $http_upgrade; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/node.com.co.local_error.log; + access_log /var/log/nginx/node.com.co.local_access.log; +} diff --git a/openresty/sites/symfony.conf.example b/openresty/sites/symfony.conf.example new file mode 100644 index 0000000..2834d74 --- /dev/null +++ b/openresty/sites/symfony.conf.example @@ -0,0 +1,42 @@ +server { + + listen 80; + listen [::]:80; + + # For https + # listen 443 ssl; + # listen [::]:443 ssl ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name symfony.test; + root /var/www/projects/symfony/web; + index index.php index.html index.htm; + + location / { + try_files $uri @rewriteapp; + } + + # For Symfony 3 + location @rewriteapp { + rewrite ^(.*)$ /app.php/$1 last; + } + + # For Symfony 4 config + # location @rewriteapp { + # rewrite ^(.*)$ /index.php/$1 last; + # } + + location ~ ^/(app|app_dev|config|index)\.php(/|$) { + fastcgi_pass php-upstream; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + fastcgi_param HTTPS off; + } + + error_log /var/log/nginx/symfony_error.log; + access_log /var/log/nginx/symfony_access.log; +} diff --git a/openresty/ssl/.gitignore b/openresty/ssl/.gitignore new file mode 100644 index 0000000..003cd8e --- /dev/null +++ b/openresty/ssl/.gitignore @@ -0,0 +1,4 @@ +*.crt +*.csr +*.key +*.pem \ No newline at end of file diff --git a/openresty/startup.sh b/openresty/startup.sh new file mode 100644 index 0000000..0f088ad --- /dev/null +++ b/openresty/startup.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ ! -f /etc/nginx/ssl/default.crt ]; then + openssl genrsa -out "/etc/nginx/ssl/default.key" 2048 + openssl req -new -key "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.csr" -subj "/CN=default/O=default/C=UK" + openssl x509 -req -days 365 -in "/etc/nginx/ssl/default.csr" -signkey "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.crt" + chmod 644 /etc/nginx/ssl/default.key +fi + +# Start crond in background +crond -l 2 -b + +# Start nginx in foreground +nginx diff --git a/ssdb/Dockerfile b/ssdb/Dockerfile new file mode 100644 index 0000000..e8e988a --- /dev/null +++ b/ssdb/Dockerfile @@ -0,0 +1,22 @@ +FROM alpine +LABEL maintainer="Leonard Buskin " + +ARG VERSION=${VERSION:-master} + +RUN apk add --no-cache --virtual .build-deps \ + curl gcc g++ make autoconf libc-dev libevent-dev linux-headers perl tar \ + && mkdir -p /ssdb/tmp \ + && curl -Lk "https://github.com/ideawu/ssdb/archive/${VERSION}.tar.gz" | \ + tar -xz -C /ssdb/tmp --strip-components=1 \ + && cd /ssdb/tmp \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install PREFIX=/ssdb \ + && rm -rf /ssdb/tmp \ + && apk add --virtual .rundeps libstdc++ \ + && apk add --no-cache bash python2 \ + && apk del .build-deps + +EXPOSE 8888 +VOLUME /ssdb/var +COPY ssdb.conf /ssdb/ssdb.conf +CMD ["/ssdb/ssdb-server", "/ssdb/ssdb.conf"] diff --git a/ssdb/ssdb.conf b/ssdb/ssdb.conf new file mode 100644 index 0000000..14122b9 --- /dev/null +++ b/ssdb/ssdb.conf @@ -0,0 +1,52 @@ +# ssdb-server config +# MUST indent by TAB! + +# relative to path of this file, directory must exists +work_dir = /data +pidfile = /run/ssdb.pid + +server: + #ip: 127.0.0.1 + port: 8888 + # bind to public ip + ip: 0.0.0.0 + # format: allow|deny: all|ip_prefix + # multiple allows or denys is supported + deny: all + allow: 127.0.0.1 + allow: 192. + allow: 172. + # auth password must be at least 32 characters + #auth: very-strong-password + +replication: + binlog: yes + # Limit sync speed to *MB/s, -1: no limit + sync_speed: -1 + slaveof: + # to identify a master even if it moved(ip, port changed) + # if set to empty or not defined, ip:port will be used. + #id: svc_2 + # sync|mirror, default is sync + #type: sync + #host: s1.ssdb.db + #port: 8888 + +logger: + level: warn + output: /var/log/ssdb.log + rotate: + size: 1000000000 + +leveldb: + # in MB + cache_size: 500 + # in KB + block_size: 32 + # in MB + write_buffer_size: 64 + # in MB + compaction_speed: 1000 + # yes|no + compression: yes + From b0f6fec975d57618d2d7408b7f97b31f1e92cc4d Mon Sep 17 00:00:00 2001 From: Larry Date: Thu, 24 Jun 2021 00:13:46 +0800 Subject: [PATCH 07/27] remove dns setting in ssdb --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6d90923..c7ba79f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -726,7 +726,6 @@ services: - ${DATA_PATH_HOST}/ssdb:/data ports: - "${SSDB_PORT}:8888" - dns: 172.17.0.1 networks: - backend From 46e5daa160139102bb13ecb57bf90af402c7a843 Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 26 Jun 2021 00:15:19 +0800 Subject: [PATCH 08/27] add openresty and ssdb setting in .env.example --- .env.example | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.env.example b/.env.example index 69ea68b..bfe6d85 100644 --- a/.env.example +++ b/.env.example @@ -325,6 +325,16 @@ NGINX_PHP_UPSTREAM_CONTAINER=php-fpm NGINX_PHP_UPSTREAM_PORT=9000 NGINX_SSL_PATH=./nginx/ssl/ +### OpenResty ################################################# + +OPENRESTY_HOST_HTTP_PORT=80 +OPENRESTY_HOST_HTTPS_PORT=443 +OPENRESTY_HOST_LOG_PATH=./logs/openresty/ +OPENRESTY_SITES_PATH=./openresty/sites/ +OPENRESTY_PHP_UPSTREAM_CONTAINER=php-fpm +OPENRESTY_PHP_UPSTREAM_PORT=9000 +OPENRESTY_SSL_PATH=./openresty/ssl/ + ### LARAVEL_HORIZON ################################################ LARAVEL_HORIZON_INSTALL_BZ2=false @@ -390,6 +400,10 @@ REDIS_PORT=6379 REDIS_CLUSTER_PORT_RANGE=7000-7005 +### SSDB ################################################# + +SSDB_PORT=16801 + ### ZooKeeper ############################################# ZOOKEEPER_PORT=2181 From b0d928762ea1751a793a64e620e3b003a44a2526 Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 26 Jun 2021 00:45:55 +0800 Subject: [PATCH 09/27] restore default.conf root path for openresty --- openresty/sites/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openresty/sites/default.conf b/openresty/sites/default.conf index 56b7a10..e02bb83 100644 --- a/openresty/sites/default.conf +++ b/openresty/sites/default.conf @@ -10,7 +10,7 @@ server { # ssl_certificate_key /etc/nginx/ssl/default.key; server_name localhost; - root /opt/www/default; + root /var/www/public; index index.php index.html index.htm; location / { From 58edaa642149c33301dc4c0d987da5837cbff35c Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 1 Jul 2021 12:22:46 +0200 Subject: [PATCH 10/27] Add Alpine version to solve issue: https://github.com/laradock/laradock/issues/3008 --- laravel-horizon/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 8823a02..87c1127 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -5,7 +5,7 @@ # ARG LARADOCK_PHP_VERSION -FROM php:${LARADOCK_PHP_VERSION}-alpine +FROM php:${LARADOCK_PHP_VERSION}-alpine3.13 LABEL maintainer="Mahmoud Zalt " From 2ac65c3fea9e46272bd87d45f80ee28470a20b70 Mon Sep 17 00:00:00 2001 From: Memo Chou Date: Sun, 11 Jul 2021 00:13:15 +0800 Subject: [PATCH 11/27] Add console port and fix environments for minio --- .env.example | 1 + docker-compose.yml | 7 ++++--- minio/Dockerfile | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 13b7ae8..7bb7910 100644 --- a/.env.example +++ b/.env.example @@ -486,6 +486,7 @@ SELENIUM_PORT=4444 ### MINIO ################################################# MINIO_PORT=9000 +MINIO_CONSOLE_PORT=9001 ### ADMINER ############################################### diff --git a/docker-compose.yml b/docker-compose.yml index f28bc4c..0db74c9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -468,9 +468,10 @@ services: - ${DATA_PATH_HOST}/minio/config:/root/.minio ports: - "${MINIO_PORT}:9000" + - "${MINIO_CONSOLE_PORT}:9001" environment: - - MINIO_ACCESS_KEY=access - - MINIO_SECRET_KEY=secretkey + - MINIO_ROOT_USER=access + - MINIO_ROOT_PASSWORD=secretkey networks: - frontend - backend @@ -2003,4 +2004,4 @@ services: ports: - ${TARANTOOL_ADMIN_PORT}:80 networks: - - backend \ No newline at end of file + - backend diff --git a/minio/Dockerfile b/minio/Dockerfile index f394fcf..eea0b41 100644 --- a/minio/Dockerfile +++ b/minio/Dockerfile @@ -2,4 +2,4 @@ FROM minio/minio LABEL maintainer="Thor Erik Lie " -ENTRYPOINT ["minio", "server", "/export"] +ENTRYPOINT ["minio", "server", "--console-address", ":9001", "/export"] From 96e5e8220e965836c05a9b97793d048725cc08f9 Mon Sep 17 00:00:00 2001 From: Memo Chou Date: Sun, 11 Jul 2021 00:38:01 +0800 Subject: [PATCH 12/27] Use dotenv for env keys --- .env.example | 2 ++ docker-compose.yml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 7bb7910..a9ebec9 100644 --- a/.env.example +++ b/.env.example @@ -487,6 +487,8 @@ SELENIUM_PORT=4444 MINIO_PORT=9000 MINIO_CONSOLE_PORT=9001 +MINIO_ROOT_USER=laradock +MINIO_ROOT_PASSWORD=laradock ### ADMINER ############################################### diff --git a/docker-compose.yml b/docker-compose.yml index 0db74c9..1e4ea9f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -470,8 +470,8 @@ services: - "${MINIO_PORT}:9000" - "${MINIO_CONSOLE_PORT}:9001" environment: - - MINIO_ROOT_USER=access - - MINIO_ROOT_PASSWORD=secretkey + - MINIO_ROOT_USER=${MINIO_ROOT_USER} + - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} networks: - frontend - backend From b7de2868eb5a20a839f94e4d79d1e7605490c277 Mon Sep 17 00:00:00 2001 From: Larry Date: Wed, 21 Jul 2021 13:46:21 +0800 Subject: [PATCH 13/27] fix bug in php-worker --- php-worker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index cf4d6d6..c06bd7e 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -432,7 +432,7 @@ ARG INSTALL_SSDB=false RUN set -xe; \ if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ - apt-get -y install sudo wget && \ + apk --update add sudo wget && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ else \ From 87b416769c5ed68cedc3dd3c3772dbc3473ded5c Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 29 Jul 2021 10:04:34 +0800 Subject: [PATCH 14/27] skip install AUDIOWAVEFORM extension #3030 --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 7011eef..619fe80 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -38,6 +38,7 @@ jobs: sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env + sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From 00ee9d74d5444d8b121e76bbc6cdb43ca4d4923b Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 29 Jul 2021 17:24:39 +0800 Subject: [PATCH 15/27] fix build error for PHP-FPM Audiowaveform #3017, #3030, #3031 --- .github/workflows/main-ci.yml | 1 - php-fpm/Dockerfile | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 619fe80..7011eef 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -38,7 +38,6 @@ jobs: sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env - sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 8e76428..9eb184b 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -990,19 +990,17 @@ ARG INSTALL_AUDIOWAVEFORM=false RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ apt-get -y install wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + && cd /tmp \ && git clone https://github.com/bbc/audiowaveform.git \ && cd audiowaveform \ - && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ - && tar xzf release-1.10.0.tar.gz \ - && ln -s googletest-release-1.10.0/googletest googletest \ - && ln -s googletest-release-1.10.0/googlemock googlemock \ + && git clone --depth=1 https://github.com/google/googletest.git -b release-1.11.0 \ && mkdir build \ && cd build \ && cmake .. \ && make \ && make install \ ;fi - + ##################################### # wkhtmltopdf: From e494712a5b61732c950502fa7aeb2b1e056c4aa1 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 30 Jul 2021 11:06:10 +0200 Subject: [PATCH 16/27] add sponsor logo --- .../home-page-images/custom-sponsors/VeePN.png | Bin 0 -> 21632 bytes DOCUMENTATION/content/introduction/index.md | 3 +++ README.md | 3 +++ 3 files changed, 6 insertions(+) create mode 100644 .github/home-page-images/custom-sponsors/VeePN.png diff --git a/.github/home-page-images/custom-sponsors/VeePN.png b/.github/home-page-images/custom-sponsors/VeePN.png new file mode 100644 index 0000000000000000000000000000000000000000..efad065de035691659802dc890f94ddb6f499e15 GIT binary patch literal 21632 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�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 erCYG^ld8vTM`4 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 literal 0 HcmV?d00001 diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index e9a39a0..8f5ac26 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -417,6 +417,9 @@ Sponsoring is an act of giving in a different fashion. 🌱

+VeePN Chrome extension + + diff --git a/README.md b/README.md index 0630fd5..fbe581e 100644 --- a/README.md +++ b/README.md @@ -224,6 +224,9 @@ Sponsoring is an act of giving in a different fashion. 🌱

+VeePN Chrome extension + + From 471e69977c90666a7440e35a7a9d82f76f9db835 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Sat, 31 Jul 2021 15:42:39 +0200 Subject: [PATCH 17/27] build the hugo site using github actions --- .github/workflows/main-ci.yml | 95 ++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 35 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 619fe80..57fa595 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -6,7 +6,7 @@ on: tags: '**' pull_request: schedule: - - cron: '0 0 * * 0' + - cron: '0 0 * * 0' jobs: build-php: @@ -16,33 +16,33 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon] + php_version: [ "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0" ] + service: [ php-fpm, php-worker, workspace, laravel-horizon ] steps: - - uses: actions/checkout@v2 - - name: Build the Docker image - env: - PHP_VERSION: ${{ matrix.php_version }} - run: | - set -eux - cp .env.example .env - sed -i -- 's/=false/=true/g' .env - sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env - sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env - sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env - sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env - sed -i -- 's/PHALCON=true/PHALCON=false/g' .env - sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env - sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env - sed -i -- 's/OCI8=true/OCI8=false/g' .env - sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env - sed -i -- 's/V8JS=true/V8JS=false/g' .env - sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env - docker-compose build ${{ matrix.service }} - docker-compose up -d --no-deps -- ${{ matrix.service }} - docker-compose exec -T -- ${{ matrix.service }} php -m - docker-compose down + - uses: actions/checkout@v2 + - name: Build the Docker image + env: + PHP_VERSION: ${{ matrix.php_version }} + run: | + set -eux + cp .env.example .env + sed -i -- 's/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env + sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env + sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env + sed -i -- 's/PHALCON=true/PHALCON=false/g' .env + sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env + sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env + sed -i -- 's/OCI8=true/OCI8=false/g' .env + sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env + sed -i -- 's/V8JS=true/V8JS=false/g' .env + sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env + docker-compose build ${{ matrix.service }} + docker-compose up -d --no-deps -- ${{ matrix.service }} + docker-compose exec -T -- ${{ matrix.service }} php -m + docker-compose down build-other: # Don't trigger on schedule event when in a fork @@ -51,12 +51,37 @@ jobs: strategy: fail-fast: false matrix: - service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] + service: [ 'nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo' ] steps: - - uses: actions/checkout@v2 - - name: Build the Docker image - run: | - cp .env.example .env - sed -i -- 's/=false/=true/g' .env - sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - docker-compose build ${{ matrix.service }} + - uses: actions/checkout@v2 + - name: Build the Docker image + run: | + cp .env.example .env + sed -i -- 's/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + docker-compose build ${{ matrix.service }} + + build-deploy-docs: + runs-on: ubuntu-20.04 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2.1.0 + with: + hugo-version: '0.20.2' + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Guthub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages From 68833d188cbc523a4c6c902baade0e4367ee01c9 Mon Sep 17 00:00:00 2001 From: Lorand Gombos Date: Fri, 13 Aug 2021 10:16:48 +0300 Subject: [PATCH 18/27] Update available php version list --- DOCUMENTATION/content/introduction/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 8f5ac26..0c726d4 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -17,7 +17,7 @@ It supports a variety of common services, all pre-configured to provide a ready ## Features -- Easy switch between PHP versions: 7.4, 7.3, 7.2, 7.1, 5.6... +- Easy switch between PHP versions: 8.0, 7.4, 7.3, 7.2, 7.1, 5.6... - Choose your favorite database engine: MySQL, Postgres, MariaDB... - Run your own stack: Memcached, HHVM, RabbitMQ... - Each software runs on its own container: PHP-FPM, NGINX, PHP-CLI... From 9707cb44b121770d061a4bd8ae3e7b59673cad42 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 13 Aug 2021 18:05:55 +0200 Subject: [PATCH 19/27] fix the build and deployment of the hugo site --- .github/workflows/main-ci.yml | 55 ++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 57fa595..74708fe 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -9,6 +9,34 @@ on: - cron: '0 0 * * 0' jobs: + build-deploy-docs: + runs-on: ubuntu-20.04 +# concurrency: +# group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: 'latest' + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./docs + build-php: # Don't trigger on schedule event when in a fork if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'laradock/laradock') @@ -17,7 +45,7 @@ jobs: fail-fast: false matrix: php_version: [ "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0" ] - service: [ php-fpm, php-worker, workspace, laravel-horizon ] + service: [ php-fpm, php-worker, workspace ] steps: - uses: actions/checkout@v2 - name: Build the Docker image @@ -60,28 +88,3 @@ jobs: sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env docker-compose build ${{ matrix.service }} - - build-deploy-docs: - runs-on: ubuntu-20.04 - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - defaults: - run: - working-directory: ./DOCUMENTATION - steps: - - name: Checkout Source Code - uses: actions/checkout@v2 - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2.1.0 - with: - hugo-version: '0.20.2' - - - name: Build Hugo Site - run: hugo --minify - - - name: Deploy Hugo Site to Guthub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages From f16445c9f225154051344ab150b8eed09c3dd96f Mon Sep 17 00:00:00 2001 From: zhuocwang Date: Mon, 16 Aug 2021 21:44:49 +0800 Subject: [PATCH 20/27] feat:support rabbitmq v3.9 --- docker-compose.yml | 5 ++--- rabbitmq/management_agent.disable_metrics_collector.conf | 1 + rabbitmq/rabbitmq.conf | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 rabbitmq/management_agent.disable_metrics_collector.conf create mode 100644 rabbitmq/rabbitmq.conf diff --git a/docker-compose.yml b/docker-compose.yml index 5847a80..5846ddd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -804,12 +804,11 @@ services: - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672" - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671" privileged: true - environment: - - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER} - - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS} hostname: laradock-rabbitmq volumes: - ${DATA_PATH_HOST}/rabbitmq:/var/lib/rabbitmq + - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf + - ./rabbitmq/management_agent.disable_metrics_collector.conf:/etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf depends_on: - php-fpm networks: diff --git a/rabbitmq/management_agent.disable_metrics_collector.conf b/rabbitmq/management_agent.disable_metrics_collector.conf new file mode 100644 index 0000000..cc680cc --- /dev/null +++ b/rabbitmq/management_agent.disable_metrics_collector.conf @@ -0,0 +1 @@ +management_agent.disable_metrics_collector = false diff --git a/rabbitmq/rabbitmq.conf b/rabbitmq/rabbitmq.conf new file mode 100644 index 0000000..a25686d --- /dev/null +++ b/rabbitmq/rabbitmq.conf @@ -0,0 +1,2 @@ +default_user = guest +default_pass = guest From 75e5a56c70456171c5c53cba1829839e927b9844 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 17 Aug 2021 07:56:45 +0800 Subject: [PATCH 21/27] only on laradock repo run build docs job --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 74708fe..d8a8c44 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -10,6 +10,7 @@ on: jobs: build-deploy-docs: + if: github.repository == 'laradock/laradock' runs-on: ubuntu-20.04 # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} From bb3e24260e7d923ce29b3ce1993c260d239ef6e5 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 17 Aug 2021 08:58:21 +0800 Subject: [PATCH 22/27] CI job skip install SSDB extension. --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d8a8c44..7b35978 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -68,6 +68,7 @@ jobs: sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env + sed -i -- 's/SSDB=true/SSDB=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From 76ca731b8e03e4dad97a480372d0d97cfc1e815f Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 17 Aug 2021 09:46:19 +0800 Subject: [PATCH 23/27] deploy docs only on master branch --- .github/workflows/build-deploy-docs.yml | 36 +++++++++++++++++++++++++ .github/workflows/main-ci.yml | 29 -------------------- 2 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/build-deploy-docs.yml diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml new file mode 100644 index 0000000..0e139b5 --- /dev/null +++ b/.github/workflows/build-deploy-docs.yml @@ -0,0 +1,36 @@ +name: Build Deploy Docs + +on: + push: + branches: + - master + +jobs: + build-deploy-docs: + if: github.repository == 'laradock/laradock' + runs-on: ubuntu-20.04 +# concurrency: +# group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: 'latest' + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./docs diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 7b35978..c609956 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -9,35 +9,6 @@ on: - cron: '0 0 * * 0' jobs: - build-deploy-docs: - if: github.repository == 'laradock/laradock' - runs-on: ubuntu-20.04 -# concurrency: -# group: ${{ github.workflow }}-${{ github.ref }} - defaults: - run: - working-directory: ./DOCUMENTATION - steps: - - name: Checkout Source Code - uses: actions/checkout@v2 - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: 'latest' - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - - - name: Build Hugo Site - run: hugo --minify - - - name: Deploy Hugo Site to Github Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages - publish_dir: ./docs - build-php: # Don't trigger on schedule event when in a fork if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'laradock/laradock') From 32ffc84d01730f03367b51220fac9a5a69ebf491 Mon Sep 17 00:00:00 2001 From: zhuocwang Date: Tue, 17 Aug 2021 13:49:27 +0800 Subject: [PATCH 24/27] clean up .env.example --- .env.example | 2 -- 1 file changed, 2 deletions(-) diff --git a/.env.example b/.env.example index 664e145..53db7ce 100644 --- a/.env.example +++ b/.env.example @@ -452,8 +452,6 @@ SQS_MANAGEMENT_HTTP_HOST_PORT=9325 RABBITMQ_NODE_HOST_PORT=5672 RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672 RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671 -RABBITMQ_DEFAULT_USER=guest -RABBITMQ_DEFAULT_PASS=guest ### MERCURE ############################################## From e72d849007327e2e860d2d00bf086324ab1d1db8 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Wed, 18 Aug 2021 19:06:27 +0200 Subject: [PATCH 25/27] fix doc style --- .github/workflows/build-deploy-docs.yml | 72 ++++++++++++------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index 0e139b5..4345a41 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -1,36 +1,36 @@ -name: Build Deploy Docs - -on: - push: - branches: - - master - -jobs: - build-deploy-docs: - if: github.repository == 'laradock/laradock' - runs-on: ubuntu-20.04 -# concurrency: -# group: ${{ github.workflow }}-${{ github.ref }} - defaults: - run: - working-directory: ./DOCUMENTATION - steps: - - name: Checkout Source Code - uses: actions/checkout@v2 - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: 'latest' - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - - - name: Build Hugo Site - run: hugo --minify - - - name: Deploy Hugo Site to Github Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages - publish_dir: ./docs +name: Build Deploy Docs + +on: + push: + branches: + - master + +jobs: + build-deploy-docs: + if: github.repository == 'laradock/laradock' + runs-on: ubuntu-20.04 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: '0.55.0' + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./docs From a2440e9f48e23a6ced29f3d2ab0012ea3bb150d4 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 19 Aug 2021 17:19:33 +0800 Subject: [PATCH 26/27] CI job Add path filter --- .github/workflows/build-deploy-docs.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index 4345a41..03bad63 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -4,6 +4,9 @@ on: push: branches: - master + paths: + - '.github/workflows/build-deploy-docs.yml' + - 'DOCUMENTATION/**' jobs: build-deploy-docs: From 910211ba2d0212532d32b3f5aca360ca84ff830d Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 19 Aug 2021 17:20:18 +0800 Subject: [PATCH 27/27] CI job Add path filter --- .github/workflows/main-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index c609956..8fe4e51 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -4,6 +4,9 @@ on: push: branches: '**' tags: '**' + paths-ignore: + - '.github/workflows/build-deploy-docs.yml' + - 'DOCUMENTATION/**' pull_request: schedule: - cron: '0 0 * * 0'