Skip to content

Commit d84d6ca

Browse files
authored
Merge pull request #55527 from nextcloud/feature/update-devcontainer
Update Nextcloud Devcontainer
2 parents e0d3f61 + 88fde78 commit d84d6ca

File tree

3 files changed

+52
-46
lines changed

3 files changed

+52
-46
lines changed

.devcontainer/Dockerfile

Lines changed: 46 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,35 @@ ARG DEBIAN_FRONTEND=noninteractive
44

55
# PHP
66
RUN apt-get update -y && \
7-
apt install -y apache2 vim software-properties-common sudo nano gnupg2
7+
apt install -y apache2 vim software-properties-common sudo nano gnupg2 wget curl git \
8+
lsb-release ca-certificates apt-transport-https && \
9+
add-apt-repository ppa:ondrej/php -y && \
10+
apt-get update -y
811

912
RUN apt-get install --no-install-recommends -y \
10-
php8.3 \
11-
php8.3-common \
12-
php8.3-gd \
13-
php8.3-zip \
14-
php8.3-curl \
15-
php8.3-xml \
16-
php8.3-xmlrpc \
17-
php8.3-mbstring \
18-
php8.3-sqlite \
19-
php8.3-xdebug \
20-
php8.3-pgsql \
21-
php8.3-intl \
22-
php8.3-imagick \
23-
php8.3-gmp \
24-
php8.3-apcu \
25-
php8.3-bcmath \
26-
php8.3-redis \
27-
php8.3-soap \
28-
php8.3-imap \
29-
php8.3-opcache \
30-
php8.3-cli \
31-
php8.3-dev \
13+
php8.4 \
14+
php8.4-common \
15+
php8.4-gd \
16+
php8.4-zip \
17+
php8.4-curl \
18+
php8.4-xml \
19+
php8.4-xmlrpc \
20+
php8.4-mbstring \
21+
php8.4-sqlite \
22+
php8.4-xdebug \
23+
php8.4-pgsql \
24+
php8.4-intl \
25+
php8.4-imagick \
26+
php8.4-gmp \
27+
php8.4-apcu \
28+
php8.4-bcmath \
29+
php8.4-redis \
30+
php8.4-soap \
31+
php8.4-imap \
32+
php8.4-opcache \
33+
php8.4-cli \
34+
php8.4-dev \
3235
libmagickcore-6.q16-7-extra \
33-
curl \
3436
lsof \
3537
make \
3638
unzip
@@ -42,39 +44,39 @@ RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php && \
4244
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
4345
rm /tmp/composer-setup.php /tmp/composer-setup.sig
4446

45-
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.3/cli/conf.d/20-xdebug.ini && \
46-
echo "xdebug.remote_autostart = 1" >> /etc/php/8.3/cli/conf.d/20-xdebug.ini && \
47-
echo "apc.enable_cli=1" >> /etc/php/8.3/cli/conf.d/20-apcu.ini
47+
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.4/cli/conf.d/20-xdebug.ini && \
48+
echo "xdebug.remote_autostart = 1" >> /etc/php/8.4/cli/conf.d/20-xdebug.ini && \
49+
echo "apc.enable_cli=1" >> /etc/php/8.4/cli/conf.d/20-apcu.ini
4850

4951
# Autostart XDebug for apache
5052
RUN { \
5153
echo "xdebug.mode=debug"; \
5254
echo "xdebug.start_with_request=yes"; \
53-
} >> /etc/php/8.3/apache2/conf.d/20-xdebug.ini
55+
} >> /etc/php/8.4/apache2/conf.d/20-xdebug.ini
5456

5557
# Increase PHP memory limit to 512mb
56-
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.3/apache2/php.ini
58+
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.4/apache2/php.ini
5759

58-
# Docker
59-
RUN apt-get -y install \
60-
apt-transport-https \
61-
ca-certificates \
62-
curl \
63-
gnupg-agent \
64-
software-properties-common && \
65-
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
66-
add-apt-repository \
67-
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
68-
$(lsb_release -cs) \
69-
stable" && \
60+
# Docker CLI only (for controlling host Docker via socket)
61+
RUN install -m 0755 -d /etc/apt/keyrings && \
62+
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
63+
chmod a+r /etc/apt/keyrings/docker.asc && \
64+
echo \
65+
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
66+
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
67+
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
7068
apt-get update -y && \
71-
apt-get install -y docker-ce docker-ce-cli containerd.io && \
69+
apt-get install -y docker-ce-cli && \
7270
ln -s /var/run/docker-host.sock /var/run/docker.sock
7371

7472
# Dedicated DevContainer user runs Apache
7573
ENV APACHE_RUN_USER=devcontainer
7674
ENV APACHE_RUN_GROUP=devcontainer
77-
RUN useradd -ms /bin/bash ${APACHE_RUN_USER} && \
75+
# Delete any existing user/group with UID/GID 1000 first
76+
RUN (getent passwd 1000 && userdel -r $(getent passwd 1000 | cut -d: -f1)) || true && \
77+
(getent group 1000 && groupdel $(getent group 1000 | cut -d: -f1)) || true && \
78+
groupadd -g 1000 ${APACHE_RUN_GROUP} && \
79+
useradd -u 1000 -g 1000 -ms /bin/bash ${APACHE_RUN_USER} && \
7880
adduser ${APACHE_RUN_USER} sudo && \
7981
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
8082
sed -ri "s/^export APACHE_RUN_USER=.*$/export APACHE_RUN_USER=${APACHE_RUN_USER}/" "/etc/apache2/envvars" && \
@@ -84,6 +86,6 @@ USER devcontainer
8486

8587
# NVM
8688
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
87-
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 16'
89+
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 22'
8890

8991
WORKDIR /var/www/html

.devcontainer/docker-compose.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
22
# SPDX-License-Identifier: AGPL-3.0-or-later
3-
version: '3'
43
services:
54
nextclouddev:
65
build: .

.devcontainer/postStart.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,9 @@
55
#
66
# Set git safe.directory
77
git config --global --add safe.directory /var/www/html
8-
git config --global --add safe.directory /var/www/html/3rdparty
8+
git config --global --add safe.directory /var/www/html/3rdparty
9+
10+
# Ensure devcontainer user has access to docker socket
11+
if [ -S /var/run/docker.sock ]; then
12+
sudo chmod 666 /var/run/docker.sock
13+
fi

0 commit comments

Comments
 (0)