Browse Source
using alpine for the docker instead of ubuntu cuts the size and installation time by quite a bitmaster
12 changed files with 129 additions and 45 deletions
@ -1,42 +1,67 @@
|
||||
FROM ubuntu:latest |
||||
FROM alpine:latest |
||||
|
||||
ARG VERSION |
||||
|
||||
RUN apt-get update && \ |
||||
apt install -y software-properties-common && \ |
||||
add-apt-repository ppa:ondrej/php && \ |
||||
apt-get install -y build-essential nginx-full php8.0-fpm php8.0 sqlite3 php8.0-sqlite3 nodejs certbot git npm cron gettext-base && \ |
||||
apt clean |
||||
# Install the needed software |
||||
RUN apk add --no-cache curl nginx php8-fpm php8-sqlite3 php8-opcache sqlite nodejs git npm bash build-base supervisor |
||||
|
||||
# Create the www-data user and group |
||||
RUN set -x ; \ |
||||
addgroup -g 82 -S www-data ; \ |
||||
adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1 |
||||
|
||||
# Link php bin |
||||
RUN ln -s /usr/bin/php8 /usr/bin/php |
||||
|
||||
# Copy supervisor conf file |
||||
COPY docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf |
||||
|
||||
# Set default workdir |
||||
WORKDIR /var/www/ |
||||
|
||||
COPY docker/docker-entrypoint.sh . |
||||
|
||||
ADD https://github.com/nokonoko/Uguu/archive/refs/tags/v${VERSION}.tar.gz v${VERSION}.tar.gz |
||||
|
||||
RUN tar xvf v${VERSION}.tar.gz && \ |
||||
mv Uguu-${VERSION}/ uguu |
||||
# Download Uguu |
||||
ADD https://git.pomf.se/Pomf/uguu/archive/v${VERSION}.tar.gz v${VERSION}.tar.gz |
||||
RUN tar xvf v${VERSION}.tar.gz |
||||
|
||||
# Create the needed directories |
||||
RUN mkdir /var/www/uguu/dist && \ |
||||
mkdir /var/www/db && \ |
||||
mkdir /var/www/files |
||||
|
||||
# Create the Sqlite DB |
||||
RUN sqlite3 /var/www/db/uguu.sq3 -init /var/www/uguu/sqlite_schema.sql && \ |
||||
chown -R www-data:www-data /var/www/db /var/www/files && \ |
||||
chown -R www-data:www-data /var/www && \ |
||||
chmod -R 775 /var/www/ |
||||
|
||||
# Fix script paths |
||||
RUN chmod a+x /var/www/uguu/checkdb.sh && \ |
||||
chmod a+x /var/www/uguu/checkfiles.sh && \ |
||||
sed -i 's#/path/to/files/#/var/www/uguu/files/#g' /var/www/uguu/checkfiles.sh && \ |
||||
sed -i 's#/path/to/db/uguu.sq3#/var/www/db/uguu.sq3#g' /var/www/uguu/checkdb.sh |
||||
|
||||
RUN echo "0,30 * * * * bash /var/www/uguu/checkfiles.sh" >> /var/spool/cron/crontabs/root && \ |
||||
echo "0,30 * * * * bash /var/www/uguu/checkdb.sh" >> /var/spool/cron/crontabs/root |
||||
|
||||
COPY docker/uguu.conf /etc/nginx/conf.d/ |
||||
|
||||
COPY dist.json /var/www/uguu/_dist.json |
||||
# Add scripts to cron |
||||
RUN echo "0,30 * * * * bash /var/www/uguu/checkfiles.sh" >> /var/spool/cron/crontabs/www-data && \ |
||||
echo "0,30 * * * * bash /var/www/uguu/checkdb.sh" >> /var/spool/cron/crontabs/www-data |
||||
|
||||
# Copy Nginx Server conf |
||||
COPY docker/uguu.conf /etc/nginx/http.d/ |
||||
|
||||
# Copy SSL certs |
||||
COPY docker/ssl /etc/ssl |
||||
|
||||
# Copy Uguu config |
||||
COPY dist.json /var/www/uguu/dist.json |
||||
|
||||
# Give permissions to www-data |
||||
RUN chown -R www-data:www-data /run /var/lib/php8 /var/lib/nginx /var/log/nginx /var/log/php8 /etc/nginx /etc/php8 |
||||
|
||||
# Change user to www-data |
||||
USER www-data |
||||
|
||||
# Expose port 80 from the container |
||||
EXPOSE 80 |
||||
|
||||
# Load entrypoint |
||||
ENTRYPOINT [ "bash", "/var/www/docker-entrypoint.sh" ] |
||||
|
@ -1,8 +1,5 @@
|
||||
#!/bin/bash |
||||
envsubst < /var/www/uguu/_dist.json > /var/www/uguu/dist.json |
||||
cd /var/www/uguu/ |
||||
make |
||||
make install |
||||
service php8.0-fpm start |
||||
service cron start |
||||
nginx -g 'daemon off;' |
||||
/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf |
||||
|
@ -0,0 +1,32 @@
|
||||
[supervisord] |
||||
nodaemon=true |
||||
logfile=/dev/null |
||||
logfile_maxbytes=0 |
||||
pidfile=/run/supervisord.pid |
||||
|
||||
[program:php-fpm] |
||||
command=php-fpm8 -F |
||||
stdout_logfile=/dev/stdout |
||||
stdout_logfile_maxbytes=0 |
||||
stderr_logfile=/dev/stderr |
||||
stderr_logfile_maxbytes=0 |
||||
autorestart=false |
||||
startretries=0 |
||||
|
||||
[program:nginx] |
||||
command=nginx -g 'daemon off;' |
||||
stdout_logfile=/dev/stdout |
||||
stdout_logfile_maxbytes=0 |
||||
stderr_logfile=/dev/stderr |
||||
stderr_logfile_maxbytes=0 |
||||
autorestart=false |
||||
startretries=0 |
||||
|
||||
[program:crond] |
||||
command=crond -b |
||||
stdout_logfile=/dev/stdout |
||||
stdout_logfile_maxbytes=0 |
||||
stderr_logfile=/dev/stderr |
||||
stderr_logfile_maxbytes=0 |
||||
autorestart=false |
||||
startretries=0 |
@ -0,0 +1,8 @@
|
||||
#!/bin/bash |
||||
echo ">>> BUILDING UGUU CONTAINER <<<" |
||||
make UGUU_RELEASE_VER=$(cat package.json | grep version | cut -d '"' -f4) DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) build-image |
||||
echo ">>> DONE! <<<" |
||||
|
||||
echo ">>> Starting Uguu container! <<<" |
||||
make DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) CONTAINER_NAME=uguu run-container |
||||
echo ">>> DONE! <<<" |
@ -0,0 +1,2 @@
|
||||
#!/bin/bash |
||||
make DOCKER_TAG=$(cat package.json | grep version | cut -d '"' -f4) CONTAINER_NAME=uguu purge-container |
Loading…
Reference in new issue