|
|
@ -6,26 +6,17 @@ FROM localhost/debian |
|
|
|
# deploy options |
|
|
|
# -p (port) and -v (volume) both go host:container |
|
|
|
LABEL deployopts="\ |
|
|
|
--cap-add SYS_ADMIN \ |
|
|
|
-p 9080:80 \ |
|
|
|
-v /tank/files/user/mar:/vol/files/mar/files \ |
|
|
|
-v /tank/files/db/nextcloud:/vol/db" |
|
|
|
# make sure mount directories exist |
|
|
|
RUN mkdir -p /vol/files/mar/files /vol/db |
|
|
|
-v /srv/vol/nextcloud/files:/vol/files \ |
|
|
|
-v /srv/vol/nextcloud/data:/vol/data" |
|
|
|
|
|
|
|
# Build Variables |
|
|
|
# versions of php and postgres |
|
|
|
ARG phpv=7.3 |
|
|
|
ARG psqlv=11 |
|
|
|
# uid that the files owner user should have |
|
|
|
ARG FILESUID=5000 |
|
|
|
|
|
|
|
# Environment Variables |
|
|
|
# database name and user |
|
|
|
ENV DBUSER=ncadmin |
|
|
|
ENV DBNAME=nextcloud |
|
|
|
# put environment variables in /etc/environment so we can access them from cron scripts |
|
|
|
RUN echo "DBUSER=$DBUSER" >> /etc/environment && \ |
|
|
|
echo "DBNAME=$DBNAME" >> /etc/environment |
|
|
|
|
|
|
|
### |
|
|
|
### General Setup |
|
|
@ -36,37 +27,56 @@ RUN apt update -y && apt install -y apache2 php-fpm php-gd php-zip \ |
|
|
|
php-pgsql php-curl php-mbstring php-intl php-imagick php-xml \ |
|
|
|
php-json redis php-redis postgresql postgresql-doc php-ldap |
|
|
|
|
|
|
|
|
|
|
|
# put database variables in /etc/environment so anyone can access them |
|
|
|
# also autodetect versions of php and postgres and put them in /etc/environment as well |
|
|
|
RUN echo "DBUSER=$DBUSER" >> /etc/environment && \ |
|
|
|
echo "DBNAME=$DBNAME" >> /etc/environment && \ |
|
|
|
echo "PSQLV=$(psql -V | cut -d ' ' -f 3 | cut -d '.' -f 1)" >> /etc/environment && \ |
|
|
|
echo "PHPV=$(echo $(php -r 'echo PHP_VERSION;') | cut -d '.' -f 1-2)" >> /etc/environment |
|
|
|
|
|
|
|
# change www-data's UID to the file owner UID |
|
|
|
RUN usermod --uid $FILESUID www-data && \ |
|
|
|
groupmod --gid $FILESUID www-data && \ |
|
|
|
chown -R www-data:www-data /var/www /vol |
|
|
|
chown -R www-data:www-data /var/www |
|
|
|
|
|
|
|
# copy our custom scripts |
|
|
|
COPY assets/bin/ /usr/local/bin/ |
|
|
|
|
|
|
|
### |
|
|
|
### PHP |
|
|
|
### |
|
|
|
|
|
|
|
# enable PHP interpreter |
|
|
|
RUN systemctl enable php${PHPV:?}-fpm |
|
|
|
|
|
|
|
# copy php configuration |
|
|
|
COPY assets/php/ php/ |
|
|
|
RUN mv php/php.ini /etc/php/${PHPV:?}/fpm/ && \ |
|
|
|
mv php/www.conf /etc/php/${PHPV:?}/fpm/pool.d/ && \ |
|
|
|
rmdir php |
|
|
|
|
|
|
|
### |
|
|
|
### PostgreSQL ### |
|
|
|
### |
|
|
|
|
|
|
|
# configure PostgreSQL access |
|
|
|
COPY --chown=postgres:postgres assets/pg_hba.conf ./ |
|
|
|
RUN mv pg_hba.conf /etc/postgresql/${PSQLV:?}/main/ |
|
|
|
|
|
|
|
### |
|
|
|
### Apache |
|
|
|
### |
|
|
|
|
|
|
|
# enable modules we need |
|
|
|
RUN a2enmod rewrite headers env dir mime proxy_fcgi && a2enconf php${phpv}-fpm |
|
|
|
RUN a2enmod rewrite headers env dir mime proxy_fcgi && \ |
|
|
|
a2enconf php${PHPV:?}-fpm |
|
|
|
|
|
|
|
# copy site config |
|
|
|
COPY assets/apache/nextcloud.conf /etc/apache2/sites-available/ |
|
|
|
WORKDIR /etc/apache2/sites-enabled |
|
|
|
RUN rm 000-default.conf && ln -s ../sites-available/nextcloud.conf |
|
|
|
|
|
|
|
### |
|
|
|
### PHP |
|
|
|
### |
|
|
|
|
|
|
|
# enable PHP interpreter |
|
|
|
RUN systemctl enable php${phpv}-fpm |
|
|
|
|
|
|
|
# copy php configuration |
|
|
|
COPY assets/php/php.ini /etc/php/${phpv}/fpm/ |
|
|
|
COPY assets/php/www.conf /etc/php/${phpv}/fpm/pool.d/ |
|
|
|
|
|
|
|
### |
|
|
|
### Redis |
|
|
|
### |
|
|
@ -77,13 +87,6 @@ COPY --chown=redis:redis assets/redis.conf /etc/redis/redis.conf |
|
|
|
# add www-data to redis group so it can use the socket |
|
|
|
RUN usermod -a -G redis www-data |
|
|
|
|
|
|
|
### |
|
|
|
### PostgreSQL ### |
|
|
|
### |
|
|
|
|
|
|
|
# configure PostgreSQL access |
|
|
|
COPY --chown=postgres:postgres assets/pg_hba.conf /etc/postgresql/${psqlv}/main/pg_hba.conf |
|
|
|
|
|
|
|
### |
|
|
|
### Nextcloud |
|
|
|
### |
|
|
@ -96,6 +99,10 @@ RUN wget https://download.nextcloud.com/server/releases/latest.zip && \ |
|
|
|
chown -R www-data:www-data nextcloud && \ |
|
|
|
rm latest.zip |
|
|
|
|
|
|
|
# create data dir for nextcloud |
|
|
|
RUN mkdir -p /srv/nextcloud/data && \ |
|
|
|
chown -R www-data:www-data /srv/nextcloud |
|
|
|
|
|
|
|
# copy nextcloud config |
|
|
|
COPY --chown=www-data:www-data assets/my.config.php nextcloud/config/ |
|
|
|
|
|
|
@ -113,6 +120,4 @@ RUN crontab -u www-data /root/crontab |
|
|
|
# push the fixed systemd file for redis |
|
|
|
COPY bugfix/redis.service /etc/systemd/system/redis.service |
|
|
|
|
|
|
|
# execute command to workaround bug in cron |
|
|
|
COPY bugfix/cronfix /root/ |
|
|
|
RUN chmod +x /root/cronfix && /root/cronfix |
|
|
|
COPY bugfix/apache2.override /etc/systemd/system/apache2.service.d/override.conf |
|
|
|