mirror of
https://github.com/HaschekSolutions/pictshare.git
synced 2025-11-11 18:56:21 +00:00
Unified docker building process. & more updates
- automatic builds - automated tags on docker - no more auto update (update your docker containers) - auto not removed of mp4 anymore - bug fixes also closes #85 and closes #124
This commit is contained in:
59
docker/Dockerfile
Normal file
59
docker/Dockerfile
Normal file
@@ -0,0 +1,59 @@
|
||||
FROM alpine:3.14.2
|
||||
|
||||
RUN apk add --no-cache bash socat wget curl nginx file ffmpeg unzip \
|
||||
php7-fileinfo \
|
||||
php7-session \
|
||||
php \
|
||||
php-curl \
|
||||
php-openssl \
|
||||
php-mbstring \
|
||||
php-json \
|
||||
php-gd \
|
||||
php-dom \
|
||||
php-fpm \
|
||||
php7 \
|
||||
php7-pdo \
|
||||
php7-exif \
|
||||
php7-mcrypt \
|
||||
php7-curl \
|
||||
php7-gd \
|
||||
php7-json \
|
||||
php7-phar \
|
||||
php7-fpm \
|
||||
php7-openssl \
|
||||
php7-ctype \
|
||||
php7-opcache \
|
||||
php7-mbstring \
|
||||
php7-sodium \
|
||||
php7-xml \
|
||||
php7-ftp \
|
||||
php7-simplexml \
|
||||
php7-session \
|
||||
php7-fileinfo \
|
||||
php7-pcntl
|
||||
|
||||
RUN curl -sS https://getcomposer.org/installer | /usr/bin/php -- --install-dir=/usr/bin --filename=composer
|
||||
RUN mkdir -p /var/www
|
||||
WORKDIR /var/www
|
||||
|
||||
ADD . /var/www/.
|
||||
|
||||
ADD docker/rootfs/start.sh /etc/start.sh
|
||||
RUN chmod +x /etc/start.sh
|
||||
|
||||
# nginx stuff
|
||||
ADD docker/rootfs/nginx.conf /etc/nginx/http.d/default.conf
|
||||
RUN mkdir -p /run/nginx
|
||||
RUN mkdir -p /var/log/nginx
|
||||
RUN sed -i 's/nobody/nginx/g' /etc/php7/php-fpm.d/www.conf
|
||||
|
||||
WORKDIR /var/www/
|
||||
|
||||
# Volumes to mount
|
||||
#VOLUME /var/lib/influxdb
|
||||
VOLUME /var/www/data
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
#CMD ["/bin/ash"]
|
||||
ENTRYPOINT ["/etc/start.sh"]
|
||||
69
docker/rootfs/nginx.conf
Normal file
69
docker/rootfs/nginx.conf
Normal file
@@ -0,0 +1,69 @@
|
||||
server {
|
||||
listen 80 default_server;
|
||||
|
||||
set $base /var/www;
|
||||
root /var/www/;
|
||||
|
||||
index index.php;
|
||||
|
||||
client_max_body_size 50M;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?url=$request_uri;
|
||||
}
|
||||
|
||||
location ~ /(data|tmp|bin|content-controllers|inc|interfaces|storage-controllers|templates|tools|docker) {
|
||||
deny all;
|
||||
return 404;
|
||||
}
|
||||
|
||||
# logging
|
||||
access_log /var/log/nginx/pictshare/access.log;
|
||||
error_log /var/log/nginx/pictshare/error.log warn;
|
||||
|
||||
location ~ \.php$ {
|
||||
# 404
|
||||
try_files $fastcgi_script_name =404;
|
||||
|
||||
# default fastcgi_params
|
||||
include fastcgi_params;
|
||||
|
||||
# fastcgi settings
|
||||
fastcgi_pass 127.0.0.1:9000;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_buffers 8 16k;
|
||||
fastcgi_buffer_size 32k;
|
||||
|
||||
# fastcgi params
|
||||
fastcgi_param DOCUMENT_ROOT $realpath_root;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/";
|
||||
}
|
||||
|
||||
location /favicon.ico {
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
# security headers
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
|
||||
|
||||
# svg, fonts
|
||||
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
|
||||
add_header Access-Control-Allow-Origin "*";
|
||||
expires 7d;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
# gzip
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
gzip_proxied any;
|
||||
gzip_comp_level 6;
|
||||
gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;
|
||||
|
||||
}
|
||||
86
docker/rootfs/start.sh
Normal file
86
docker/rootfs/start.sh
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
|
||||
######### functions
|
||||
|
||||
_maxUploadSize() {
|
||||
echo "[i] Setting uploadsize to ${MAX_UPLOAD_SIZE}M"
|
||||
|
||||
sed -i "/post_max_size/c\post_max_size=${MAX_UPLOAD_SIZE}M" /etc/php7/php.ini
|
||||
sed -i "/upload_max_filesize/c\upload_max_filesize=${MAX_UPLOAD_SIZE}M" /etc/php7/php.ini
|
||||
|
||||
sed -i -e "s/50M/${MAX_UPLOAD_SIZE}M/g" /etc/nginx/http.d/default.conf
|
||||
|
||||
MAX_RAM=$((MAX_UPLOAD_SIZE + 30)) # 30megs more than the upload size
|
||||
echo "[i] Also changing memory limit of PHP to ${MAX_RAM}M"
|
||||
sed -i -e "s/128M/${MAX_RAM}M/g" /etc/php7/php.ini
|
||||
sed -i "/memory_limit/c\memory_limit=${MAX_RAM}M" /etc/php7/php.ini
|
||||
}
|
||||
|
||||
_filePermissions() {
|
||||
chown -R nginx:nginx /var/www
|
||||
}
|
||||
|
||||
_buildConfig() {
|
||||
echo "<?php"
|
||||
echo "define('URL', '${URL:-}');"
|
||||
echo "define('TITLE', '${TITLE:-PictShare}');"
|
||||
echo "define('ALLOWED_SUBNET', '${ALLOWED_SUBNET:-}');"
|
||||
echo "define('CONTENTCONTROLLERS', '${CONTENTCONTROLLERS:-}');"
|
||||
echo "define('MASTER_DELETE_CODE', '${MASTER_DELETE_CODE:-}');"
|
||||
echo "define('MASTER_DELETE_IP', '${MASTER_DELETE_IP:-}');"
|
||||
echo "define('UPLOAD_FORM_LOCATION', '${UPLOAD_FORM_LOCATION:-}');"
|
||||
echo "define('UPLOAD_CODE', '${UPLOAD_CODE:-}');"
|
||||
echo "define('LOG_UPLOADER', ${LOG_UPLOADER:-false});"
|
||||
echo "define('MAX_RESIZED_IMAGES',${MAX_RESIZED_IMAGES:--1});"
|
||||
echo "define('ALLOW_BLOATING', ${ALLOW_BLOATING:-false});"
|
||||
echo "define('SHOW_ERRORS', ${SHOW_ERRORS:-false});"
|
||||
echo "define('JPEG_COMPRESSION', ${JPEG_COMPRESSION:-90});"
|
||||
echo "define('PNG_COMPRESSION', ${PNG_COMPRESSION:-6});"
|
||||
echo "define('ALT_FOLDER', '${ALT_FOLDER:-}');"
|
||||
echo "define('S3_BUCKET', '${S3_BUCKET:-}');"
|
||||
echo "define('S3_ACCESS_KEY', '${S3_ACCESS_KEY:-}');"
|
||||
echo "define('S3_SECRET_KEY', '${S3_SECRET_KEY:-}');"
|
||||
echo "define('S3_ENDPOINT', '${S3_ENDPOINT:-}');"
|
||||
echo "define('FTP_SERVER', '${FTP_SERVER:-}');"
|
||||
echo "define('FTP_PORT', ${FTP_PORT:-21});"
|
||||
echo "define('FTP_USER', '${FTP_USER:-}');"
|
||||
echo "define('FTP_PASS', '${FTP_PASS:-}');"
|
||||
echo "define('FTP_SSL', ${FTP_SSL:-false});"
|
||||
echo "define('FTP_BASEDIR', '${FTP_BASEDIR:-}');"
|
||||
echo "define('ENCRYPTION_KEY', '${ENCRYPTION_KEY:-}');"
|
||||
echo "define('FFMPEG_BINARY', '${FFMPEG_BINARY:-/usr/bin/ffmpeg}');"
|
||||
}
|
||||
|
||||
|
||||
|
||||
######### main
|
||||
|
||||
echo 'Starting Pictshare'
|
||||
|
||||
cd /var/www/
|
||||
|
||||
if [[ ${MAX_UPLOAD_SIZE:=100} =~ ^[0-9]+$ ]]; then
|
||||
_maxUploadSize
|
||||
fi
|
||||
|
||||
echo ' [+] Starting php'
|
||||
php-fpm7
|
||||
|
||||
chown -R nginx:nginx /var/www/
|
||||
|
||||
echo ' [+] Creating config'
|
||||
|
||||
touch data/sha1.csv
|
||||
chown nginx:nginx data/sha1.csv
|
||||
|
||||
_buildConfig > inc/config.inc.php
|
||||
|
||||
echo ' [+] Starting nginx'
|
||||
|
||||
mkdir -p /var/log/nginx/pictshare
|
||||
touch /var/log/nginx/pictshare/access.log
|
||||
touch /var/log/nginx/pictshare/error.log
|
||||
|
||||
nginx
|
||||
|
||||
tail -f /var/log/nginx/pictshare/*.log
|
||||
Reference in New Issue
Block a user