Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "Passman Dev Container",
"dockerFile": "../Dockerfile",
"context": "..",
"overrideCommand": false,
"build": {
"target": "dev"
},
"appPort": ["3001:3001", "9001:80", "9002:443"],
"customizations": {
"vscodium": {
"extensions": [
"devsense.phptools-vscode",
"devsense.composer-php-vscode",
"gydunhn.javascript-essentials"
],
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
}
}
},
"containerUser": "root",
"remoteUser": "www-data",
"workspaceFolder": "/var/www/passman",
"workspaceMount": "source=${localWorkspaceFolder},target=/var/www/passman,type=bind,consistency=cache",
"runArgs": ["--log-opt", "max-size=10M", "--log-opt", "max-file=3"]
}
58 changes: 39 additions & 19 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Nextcloud - passman - custom dev container

FROM ubuntu:20.04
FROM ubuntu:24.04 AS base
RUN /bin/bash -c "export DEBIAN_FRONTEND=noninteractive" && \
/bin/bash -c "debconf-set-selections <<< 'mariadb-server mysql-server/root_password password PASS'" && \
/bin/bash -c "debconf-set-selections <<< 'mariadb-server mysql-server/root_password_again password PASS'" && \
Expand All @@ -13,20 +13,19 @@ RUN /bin/bash -c "export DEBIAN_FRONTEND=noninteractive" && \
cowsay-off \
git \
curl \
libapache2-mod-php7.4 \
libapache2-mod-php \
mariadb-server \
php7.4 \
php7.4-mysql \
php7.4-curl \
php-dompdf \
php7.4-gd \
php7.4-mbstring \
php7.4-xml \
php7.4-zip \
php7.4-intl \
php7.4-bcmath \
php7.4-gmp \
php7.4-imagick \
php \
php-mysql \
php-curl \
php-gd \
php-mbstring \
php-xml \
php-zip \
php-intl \
php-bcmath \
php-gmp \
php-imagick \
phpunit \
wget \
openssh-server \
Expand All @@ -35,7 +34,7 @@ RUN /bin/bash -c "export DEBIAN_FRONTEND=noninteractive" && \
composer \
sudo

RUN gem install sass && \
RUN npm install -g sass && \
a2enmod ssl && \
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled && \
git clone https://github.com/nextcloud/passman /var/www/passman && \
Expand All @@ -44,21 +43,21 @@ RUN gem install sass && \

ADD https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh /var/www/passman

RUN service mysql restart && \
mysql -uroot -pPASS -e "SET PASSWORD = PASSWORD('');" && \
RUN service mariadb restart && \
mariadb -uroot -pPASS -e "SET PASSWORD = PASSWORD('');" && \
sed -i '0,/.*SSLCertificateChainFile.*/s/.*SSLCertificateChainFile.*/SSLCertificateChainFile \/etc\/ssl\/private\/fullchain.pem/' /etc/apache2/sites-enabled/default-ssl.conf && \
sed -i '0,/.*ssl-cert-snakeoil.pem.*/s/.*ssl-cert-snakeoil.pem.*/SSLCertificateFile \/etc\/ssl\/private\/cert.pem/' /etc/apache2/sites-enabled/default-ssl.conf && \
sed -i '0,/.*SSLCertificateKeyFile.*/s/.*SSLCertificateKeyFile.*/SSLCertificateKeyFile \/etc\/ssl\/private\/privkey.pem/' /etc/apache2/sites-enabled/default-ssl.conf && \
echo "echo hhvm" > /bin/phpenv && chmod +x /bin/phpenv && \
cd /var/www/passman && \
chmod +x before_install.sh && \
sleep 1 && \
/bin/bash -c "./before_install.sh passman stable21 mysql; exit 0" && \
/bin/bash -c "./before_install.sh passman stable31 mysql; exit 0" && \
rm /var/www/server/apps/passman/before_install.sh && \
mv /var/www/server/* /var/www/html/ && \
cd /var/www/html/ && \
chmod +x occ && \
service mysql restart && \
service mariadb restart && \
./occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database mysql --database-pass 'owncloud' && \
sed -i 's/\/var\/www\/server/\/var\/www\/html/g' /var/www/html/config/config.php && \
cat /var/www/html/config/config.php && \
Expand All @@ -82,4 +81,25 @@ RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD []

FROM base AS dev
ENV DEV=1
RUN npm install -g browser-sync
COPY auto-reload.sh /
RUN chmod +x /auto-reload.sh
RUN openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/private/privkey.pem \
-out /etc/ssl/private/cert.pem \
-subj "/C=DE/ST=Berlin/L=Berlin/O=MyCompany/OU=IT/CN=localhost" \
&& cp /etc/ssl/private/cert.pem /etc/ssl/private/fullchain.pem \
&& chsh -s /bin/bash www-data \
&& cd /var/www/html \
&& service mariadb restart \
&& ./occ config:system:set trusted_domains 5 --value=localhost \
&& ./occ config:system:set trusted_domains 6 --value=0.0.0.0

EXPOSE 3001

FROM base AS prod

#/usr/games/cowsay -f dragon.cow "you might now login using username:admin password:admin" && \
3 changes: 3 additions & 0 deletions auto-reload.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash
# Beobachte HTML/PHP/JS/CSS Änderungen in /var/www/html
browser-sync start --proxy "http://0.0.0.0:80" --files "/var/www/passman/**/*.*" --no-ui --no-notify --host 0.0.0.0 --listen 0.0.0.0 --port 3001
9 changes: 7 additions & 2 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,21 @@
# SIGTERM-handler
term_handler() {
service apache2 stop
service mysql stop
service mariadb stop
exit 0
}

set -x

service ssh start
service mysql start
service mariadb start
service apache2 start

# Start file watch for browser hot reload inside the devcontainer
if [ "$DEV" = "1" ]; then
/auto-reload.sh &
fi


trap 'kill ${!}; term_handler' SIGTERM

Expand Down