@ -4,33 +4,35 @@ ARG DEBIAN_FRONTEND=noninteractive
# PHP
RUN apt-get update -y && \
apt install -y apache2 vim software-properties-common sudo nano gnupg2
apt install -y apache2 vim software-properties-common sudo nano gnupg2 wget curl git \
lsb-release ca-certificates apt-transport-https && \
add-apt-repository ppa:ondrej/php -y && \
apt-get update -y
RUN apt-get install --no-install-recommends -y \
php8.3 \
php8.3 -common \
php8.3 -gd \
php8.3 -zip \
php8.3 -curl \
php8.3 -xml \
php8.3 -xmlrpc \
php8.3 -mbstring \
php8.3 -sqlite \
php8.3 -xdebug \
php8.3 -pgsql \
php8.3 -intl \
php8.3 -imagick \
php8.3 -gmp \
php8.3 -apcu \
php8.3 -bcmath \
php8.3 -redis \
php8.3 -soap \
php8.3 -imap \
php8.3 -opcache \
php8.3 -cli \
php8.3 -dev \
php8.4 \
php8.4 -common \
php8.4 -gd \
php8.4 -zip \
php8.4 -curl \
php8.4 -xml \
php8.4 -xmlrpc \
php8.4 -mbstring \
php8.4 -sqlite \
php8.4 -xdebug \
php8.4 -pgsql \
php8.4 -intl \
php8.4 -imagick \
php8.4 -gmp \
php8.4 -apcu \
php8.4 -bcmath \
php8.4 -redis \
php8.4 -soap \
php8.4 -imap \
php8.4 -opcache \
php8.4 -cli \
php8.4 -dev \
libmagickcore-6.q16-7-extra \
curl \
lsof \
make \
unzip
@ -42,39 +44,39 @@ RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php && \
php /tmp/composer-setup.php --install-dir= /usr/local/bin --filename= composer && \
rm /tmp/composer-setup.php /tmp/composer-setup.sig
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.3 /cli/conf.d/20-xdebug.ini && \
echo "xdebug.remote_autostart = 1" >> /etc/php/8.3 /cli/conf.d/20-xdebug.ini && \
echo "apc.enable_cli=1" >> /etc/php/8.3 /cli/conf.d/20-apcu.ini
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.4 /cli/conf.d/20-xdebug.ini && \
echo "xdebug.remote_autostart = 1" >> /etc/php/8.4 /cli/conf.d/20-xdebug.ini && \
echo "apc.enable_cli=1" >> /etc/php/8.4 /cli/conf.d/20-apcu.ini
# Autostart XDebug for apache
RUN { \
echo "xdebug.mode=debug" ; \
echo "xdebug.start_with_request=yes" ; \
} >> /etc/php/8.3 /apache2/conf.d/20-xdebug.ini
} >> /etc/php/8.4 /apache2/conf.d/20-xdebug.ini
# Increase PHP memory limit to 512mb
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.3 /apache2/php.ini
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.4 /apache2/php.ini
# Docker
RUN apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository \
" deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$( lsb_release -cs) \
stable" && \
# Docker CLI only (for controlling host Docker via socket)
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo \
" deb [arch= $( dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$( . /etc/os-release && echo " ${ UBUNTU_CODENAME :- $VERSION_CODENAME } " ) stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get update -y && \
apt-get install -y docker-ce docker-ce -cli containerd.io && \
apt-get install -y docker-ce-cli && \
ln -s /var/run/docker-host.sock /var/run/docker.sock
# Dedicated DevContainer user runs Apache
ENV APACHE_RUN_USER = devcontainer
ENV APACHE_RUN_GROUP = devcontainer
RUN useradd -ms /bin/bash ${ APACHE_RUN_USER } && \
# Delete any existing user/group with UID/GID 1000 first
RUN ( getent passwd 1000 && userdel -r $( getent passwd 1000 | cut -d: -f1) ) || true && \
( getent group 1000 && groupdel $( getent group 1000 | cut -d: -f1) ) || true && \
groupadd -g 1000 ${ APACHE_RUN_GROUP } && \
useradd -u 1000 -g 1000 -ms /bin/bash ${ APACHE_RUN_USER } && \
adduser ${ APACHE_RUN_USER } sudo && \
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
sed -ri " s/^export APACHE_RUN_USER=.* $/export APACHE_RUN_USER= ${ APACHE_RUN_USER } / " "/etc/apache2/envvars" && \
@ -84,6 +86,6 @@ USER devcontainer
# NVM
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 16 '
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 22 '
WORKDIR /var/www/html