Files
laravel-starter-kit/docker/workspace/Dockerfile

85 lines
2.4 KiB
Docker

# 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"]