Walter Franchetti преди 6 години
родител
ревизия
22032974c9

+ 18 - 0
docker-compose.yml

@@ -193,6 +193,24 @@ services:
         - "dockerhost:${DOCKER_HOST_IP}"
       networks:
         - backend
+### Laravel Horizon ############################################
+    laravel-horizon:
+      build:
+        context: ./laravel-horizon
+        args:
+          - PHP_VERSION=${PHP_VERSION}
+          - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
+          - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
+          - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
+      volumes:
+        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
+        - ./laravel-horizon/supervisord.d:/etc/supervisord.d
+      depends_on:
+        - workspace
+      extra_hosts:
+        - "dockerhost:${DOCKER_HOST_IP}"
+      networks:
+        - backend
 
 ### NGINX Server #########################################
     nginx:

+ 107 - 0
laravel-horizon/Dockerfile

@@ -0,0 +1,107 @@
+#
+#--------------------------------------------------------------------------
+# Image Setup
+#--------------------------------------------------------------------------
+#
+
+ARG PHP_VERSION=${PHP_VERSION}
+FROM php:${PHP_VERSION}-alpine
+
+LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
+
+RUN apk --update add wget \
+  curl \
+  git \
+  build-base \
+  libmemcached-dev \
+  libmcrypt-dev \
+  libxml2-dev \
+  zlib-dev \
+  autoconf \
+  cyrus-sasl-dev \
+  libgsasl-dev \
+  supervisor
+
+RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl
+RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached
+
+#Install BCMath package:
+ARG INSTALL_BCMATH=false
+RUN if [ ${INSTALL_BCMATH} = true ]; then \
+  docker-php-ext-install bcmath \
+  ;fi
+
+# Install PostgreSQL drivers:
+ARG INSTALL_PGSQL=false
+RUN if [ ${INSTALL_PGSQL} = true ]; then \
+  apk --update add postgresql-dev \
+  && docker-php-ext-install pdo_pgsql \
+  ;fi
+
+###########################################################################
+# PHP Memcached:
+###########################################################################
+
+ARG INSTALL_MEMCACHED=false
+
+RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
+  # Install the php memcached extension
+  if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
+  curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/2.2.0.tar.gz"; \
+  else \
+  curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz"; \
+  fi \
+  && mkdir -p memcached \
+  && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
+  && ( \
+  cd memcached \
+  && phpize \
+  && ./configure \
+  && make -j$(nproc) \
+  && make install \
+  ) \
+  && rm -r memcached \
+  && rm /tmp/memcached.tar.gz \
+  && docker-php-ext-enable memcached \
+  ;fi
+
+RUN rm /var/cache/apk/* \
+  && mkdir -p /var/www
+
+#
+#--------------------------------------------------------------------------
+# Optional Supervisord Configuration
+#--------------------------------------------------------------------------
+#
+# Modify the ./supervisor.conf file to match your App's requirements.
+# Make sure you rebuild your container with every change.
+#
+
+COPY supervisord.conf /etc/supervisord.conf
+
+ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c",  "/etc/supervisord.conf"]
+
+#
+#--------------------------------------------------------------------------
+# Optional Software's Installation
+#--------------------------------------------------------------------------
+#
+# If you need to modify this image, feel free to do it right here.
+#
+# -- Your awesome modifications go here -- #
+
+#
+#--------------------------------------------------------------------------
+# Check PHP version
+#--------------------------------------------------------------------------
+#
+
+RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}."
+
+#
+#--------------------------------------------------------------------------
+# Final Touch
+#--------------------------------------------------------------------------
+#
+
+WORKDIR /etc/supervisor/conf.d/

+ 10 - 0
laravel-horizon/supervisord.conf

@@ -0,0 +1,10 @@
+[supervisord]
+nodaemon=true
+[supervisorctl]
+[inet_http_server]
+port = 127.0.0.1:9001
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[include]
+files = supervisord.d/*.conf

+ 1 - 0
laravel-horizon/supervisord.d/.gitignore

@@ -0,0 +1 @@
+*.conf

+ 6 - 0
laravel-horizon/supervisord.d/laravel-horizon.conf.example

@@ -0,0 +1,6 @@
+[program:laravel-horizon]
+process_name=%(program_name)s_%(process_num)02d
+command=php /var/www/artisan horizon
+autostart=true
+autorestart=true
+redirect_stderr=true