# Use Alpine base image FROM git.esculta.es/aesculta/alpine-base # Environment variables ENV NEXTCLOUD_VERSION=latest \ 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_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"]