67 lines
No EOL
2 KiB
Docker
67 lines
No EOL
2 KiB
Docker
# Use Alpine base image
|
|
FROM git.esculta.es/aesculta/alpine-base
|
|
|
|
# Environment variables
|
|
ENV NEXTCLOUD_VERSION=31.0.1 \
|
|
PHP_VERSION=83 \
|
|
UID=1000 \
|
|
GID=1000 \
|
|
DATA_DIR=/var/www/nextcloud/data
|
|
|
|
# Install dependencies
|
|
RUN apk add --no-cache --update \
|
|
nginx \
|
|
php${PHP_VERSION} \
|
|
php${PHP_VERSION}-fpm \
|
|
php${PHP_VERSION}-common \
|
|
php${PHP_VERSION}-gd \
|
|
php${PHP_VERSION}-pdo_mysql \
|
|
php${PHP_VERSION}-mbstring \
|
|
php${PHP_VERSION}-curl \
|
|
php${PHP_VERSION}-xml \
|
|
php${PHP_VERSION}-zip \
|
|
php${PHP_VERSION}-intl \
|
|
php${PHP_VERSION}-bcmath \
|
|
php${PHP_VERSION}-opcache \
|
|
php${PHP_VERSION}-sodium \
|
|
php${PHP_VERSION}-exif \
|
|
php${PHP_VERSION}-fileinfo \
|
|
php${PHP_VERSION}-pecl-apcu \
|
|
php${PHP_VERSION}-pecl-redis \
|
|
supervisor \
|
|
curl \
|
|
tar \
|
|
bash
|
|
|
|
# Create nextcloud user/group and configure permissions
|
|
RUN addgroup -g ${GID} nextcloud && \
|
|
adduser -D -u ${UID} -G nextcloud -h /var/www/nextcloud nextcloud && \
|
|
addgroup nginx nextcloud
|
|
|
|
# Download and install Nextcloud
|
|
RUN curl -o nextcloud.tar.bz2 -fsSL \
|
|
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2" && \
|
|
tar -xjf nextcloud.tar.bz2 -C /var/www/ && \
|
|
rm nextcloud.tar.bz2 && \
|
|
mkdir -p ${DATA_DIR} && \
|
|
chown -R nextcloud:nextcloud /var/www/nextcloud && \
|
|
find /var/www/nextcloud -type d -exec chmod 750 {} \; && \
|
|
find /var/www/nextcloud -type f -exec chmod 640 {} \; && \
|
|
chmod -R 770 ${DATA_DIR}
|
|
|
|
# Configure services
|
|
COPY config/nginx.conf /etc/nginx/http.d/default.conf
|
|
COPY config/php-fpm.conf /etc/php${PHP_VERSION}/php-fpm.d/nextcloud.conf
|
|
COPY config/supervisord.conf /etc/supervisord.conf
|
|
COPY config/php.ini /etc/php${PHP_VERSION}/conf.d/nextcloud.ini
|
|
|
|
# Configure entrypoint
|
|
COPY config/entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# Expose volumes and ports
|
|
VOLUME ${DATA_DIR}
|
|
EXPOSE 80
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
CMD ["supervisord", "-c", "/etc/supervisord.conf"] |