Add Docker-based dev/prod setup with zail helper scripts
This commit is contained in:
84
docker/workspace/Dockerfile
Normal file
84
docker/workspace/Dockerfile
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user