Files
michaelschiemer/docker/worker/Dockerfile
Michael Schiemer a52142f304 chore: Update Dockerfiles, Makefile and documentation
- Updated Dockerfile.production
- Updated Makefile
- Updated deployment documentation
- Updated docker/ci/Dockerfile, docker/php/Dockerfile, docker/worker/Dockerfile
- Updated dependency scanning documentation
- Added git-hooks documentation
2025-11-01 21:16:03 +01:00

73 lines
2.0 KiB
Docker

ARG PHP_VERSION=8.5.0RC3
# Keep aligned with runtime PHP tag (override via --build-arg PHP_VERSION=X)
FROM php:${PHP_VERSION}-cli
# Install system dependencies including libraries for GD and other extensions
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
libonig-dev \
libxml2-dev \
libzip-dev \
libicu-dev \
libpq-dev \
libsodium-dev \
zip \
unzip \
procps \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean
# Configure GD extension with JPEG and FreeType support
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
# Install PHP extensions for worker functionality and web features
# Note: opcache and sodium are already built into PHP 8.5
RUN docker-php-ext-install -j$(nproc) \
pdo_mysql \
pdo_pgsql \
mbstring \
exif \
pcntl \
posix \
sockets \
shmop \
gd \
zip \
intl \
bcmath
# Install PECL extensions (Redis for queue system)
RUN pecl install redis-6.3.0RC1 apcu \
&& docker-php-ext-enable redis apcu
# Configure APCu
RUN echo "apc.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini \
&& echo "apc.shm_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www/html
# Create storage directory structure for volume mounts
RUN mkdir -p /var/www/html/storage/cache \
/var/www/html/storage/queue \
/var/www/html/storage/discovery \
/var/www/html/storage/logs \
/var/www/html/var
# Note: Application files and dependencies will be available via mounted volume
# No need to copy files during build since we'll use the mounted project directory
# Health check for the worker
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD ps aux | grep -v grep | grep "worker.php" || exit 1
# Run worker directly since permissions are handled by docker-compose user directive
CMD ["php", "/var/www/html/worker.php"]