# docker/workspace/Dockerfile # Use the official PHP CLI image as the base FROM php:8.4-cli # Set environment variables for user and group ID ARG UID=1000 ARG GID=1000 ARG NODE_VERSION=22.0.0 # Install system dependencies and build libraries RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ unzip \ libpq-dev \ libonig-dev \ libssl-dev \ libxml2-dev \ libcurl4-openssl-dev \ libicu-dev \ libzip-dev \ && docker-php-ext-install -j"$(nproc)" \ pdo_mysql \ pdo_pgsql \ pgsql \ opcache \ intl \ zip \ bcmath \ soap \ && pecl install redis xdebug \ && docker-php-ext-enable redis xdebug \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Xdebug-Args ARG XDEBUG_ENABLED ARG XDEBUG_MODE ARG XDEBUG_HOST ARG XDEBUG_IDE_KEY ARG XDEBUG_LOG ARG XDEBUG_LOG_LEVEL # Configure Xdebug if enabled RUN if [ "${XDEBUG_ENABLED}" = "true" ]; then \ docker-php-ext-enable xdebug && \ { \ echo "xdebug.mode=${XDEBUG_MODE}"; \ echo "xdebug.idekey=${XDEBUG_IDE_KEY}"; \ echo "xdebug.log=${XDEBUG_LOG}"; \ echo "xdebug.log_level=${XDEBUG_LOG_LEVEL}"; \ echo "xdebug.client_host=${XDEBUG_HOST}"; \ echo "xdebug.start_with_request=yes"; \ } >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini ; \ fi # User/Gruppe anlegen RUN if getent group "${GID}" >/dev/null; then \ useradd -m -u "${UID}" -g "${GID}" -s /bin/bash www; \ else \ groupadd -g "${GID}" www && \ useradd -m -u "${UID}" -g www -s /bin/bash www; \ fi \ && usermod -aG sudo www \ && echo 'www ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers USER www # NVM + Node installieren RUN export NVM_DIR="$HOME/.nvm" && \ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash && \ [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \ nvm install "${NODE_VERSION}" && \ nvm alias default "${NODE_VERSION}" && \ nvm use default RUN echo 'export NVM_DIR="$HOME/.nvm"' >> /home/www/.bashrc && \ echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> /home/www/.bashrc && \ echo '[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' >> /home/www/.bashrc WORKDIR /var/www ENTRYPOINT [] CMD ["bash"]