mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-24 23:35:23 +00:00
Docker changes
This commit is contained in:
parent
30c611edd5
commit
5c65b81851
11 changed files with 2311 additions and 209 deletions
143
.env.docker
Normal file
143
.env.docker
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
## Crypto
|
||||||
|
APP_KEY=
|
||||||
|
|
||||||
|
## General Settings
|
||||||
|
APP_NAME="Pixelfed Prod"
|
||||||
|
APP_ENV=production
|
||||||
|
APP_DEBUG=false
|
||||||
|
APP_URL=https://real.domain
|
||||||
|
APP_DOMAIN="real.domain"
|
||||||
|
ADMIN_DOMAIN="real.domain"
|
||||||
|
SESSION_DOMAIN="real.domain"
|
||||||
|
|
||||||
|
OPEN_REGISTRATION=true
|
||||||
|
ENFORCE_EMAIL_VERIFICATION=false
|
||||||
|
PF_MAX_USERS=1000
|
||||||
|
OAUTH_ENABLED=true
|
||||||
|
|
||||||
|
APP_TIMEZONE=UTC
|
||||||
|
APP_LOCALE=en
|
||||||
|
|
||||||
|
## Pixelfed Tweaks
|
||||||
|
LIMIT_ACCOUNT_SIZE=true
|
||||||
|
MAX_ACCOUNT_SIZE=1000000
|
||||||
|
MAX_PHOTO_SIZE=15000
|
||||||
|
MAX_AVATAR_SIZE=2000
|
||||||
|
MAX_CAPTION_LENGTH=500
|
||||||
|
MAX_BIO_LENGTH=125
|
||||||
|
MAX_NAME_LENGTH=30
|
||||||
|
MAX_ALBUM_LENGTH=4
|
||||||
|
IMAGE_QUALITY=80
|
||||||
|
PF_OPTIMIZE_IMAGES=true
|
||||||
|
PF_OPTIMIZE_VIDEOS=true
|
||||||
|
ADMIN_ENV_EDITOR=false
|
||||||
|
ACCOUNT_DELETION=true
|
||||||
|
ACCOUNT_DELETE_AFTER=false
|
||||||
|
MAX_LINKS_PER_POST=0
|
||||||
|
|
||||||
|
## Instance
|
||||||
|
#INSTANCE_DESCRIPTION=
|
||||||
|
INSTANCE_PUBLIC_HASHTAGS=false
|
||||||
|
#INSTANCE_CONTACT_EMAIL=
|
||||||
|
INSTANCE_PUBLIC_LOCAL_TIMELINE=false
|
||||||
|
#BANNED_USERNAMES=
|
||||||
|
STORIES_ENABLED=false
|
||||||
|
RESTRICTED_INSTANCE=false
|
||||||
|
|
||||||
|
## Mail
|
||||||
|
MAIL_DRIVER=log
|
||||||
|
MAIL_HOST=smtp.mailtrap.io
|
||||||
|
MAIL_PORT=2525
|
||||||
|
MAIL_FROM_ADDRESS="pixelfed@example.com"
|
||||||
|
MAIL_FROM_NAME="Pixelfed"
|
||||||
|
MAIL_USERNAME=null
|
||||||
|
MAIL_PASSWORD=null
|
||||||
|
MAIL_ENCRYPTION=null
|
||||||
|
|
||||||
|
## Databases (MySQL)
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=127.0.0.1
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=pixelfed
|
||||||
|
DB_USERNAME=pixelfed
|
||||||
|
DB_PASSWORD=pixelfed
|
||||||
|
|
||||||
|
## Databases (Postgres)
|
||||||
|
#DB_CONNECTION=pgsql
|
||||||
|
#DB_HOST=postgres
|
||||||
|
#DB_PORT=5432
|
||||||
|
#DB_DATABASE=pixelfed
|
||||||
|
#DB_USERNAME=postgres
|
||||||
|
#DB_PASSWORD=postgres
|
||||||
|
|
||||||
|
## Cache (Redis)
|
||||||
|
REDIS_CLIENT=phpredis
|
||||||
|
REDIS_SCHEME=tcp
|
||||||
|
REDIS_HOST=redis
|
||||||
|
REDIS_PASSWORD=null
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_DATABASE=0
|
||||||
|
|
||||||
|
## EXPERIMENTS
|
||||||
|
EXP_LC=false
|
||||||
|
EXP_REC=false
|
||||||
|
EXP_LOOPS=false
|
||||||
|
|
||||||
|
## ActivityPub Federation
|
||||||
|
ACTIVITY_PUB=false
|
||||||
|
AP_REMOTE_FOLLOW=false
|
||||||
|
AP_SHAREDINBOX=false
|
||||||
|
AP_INBOX=false
|
||||||
|
AP_OUTBOX=false
|
||||||
|
ATOM_FEEDS=true
|
||||||
|
NODEINFO=true
|
||||||
|
WEBFINGER=true
|
||||||
|
|
||||||
|
## S3
|
||||||
|
FILESYSTEM_DRIVER=local
|
||||||
|
FILESYSTEM_CLOUD=s3
|
||||||
|
PF_ENABLE_CLOUD=false
|
||||||
|
#AWS_ACCESS_KEY_ID=
|
||||||
|
#AWS_SECRET_ACCESS_KEY=
|
||||||
|
#AWS_DEFAULT_REGION=
|
||||||
|
#AWS_BUCKET=
|
||||||
|
#AWS_URL=
|
||||||
|
#AWS_ENDPOINT=
|
||||||
|
#AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||||
|
|
||||||
|
## Horizon
|
||||||
|
HORIZON_DARKMODE=false
|
||||||
|
|
||||||
|
## COSTAR - Confirm Object Sentiment Transform and Reduce
|
||||||
|
PF_COSTAR_ENABLED=false
|
||||||
|
|
||||||
|
# Media
|
||||||
|
MEDIA_EXIF_DATABASE=false
|
||||||
|
|
||||||
|
## Logging
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
|
||||||
|
## Image
|
||||||
|
IMAGE_DRIVER=imagick
|
||||||
|
|
||||||
|
## Broadcasting
|
||||||
|
BROADCAST_DRIVER=log # log driver for local development
|
||||||
|
|
||||||
|
## Cache
|
||||||
|
CACHE_DRIVER=redis
|
||||||
|
|
||||||
|
## Purify
|
||||||
|
RESTRICT_HTML_TYPES=true
|
||||||
|
|
||||||
|
## Queue
|
||||||
|
QUEUE_DRIVER=redis
|
||||||
|
|
||||||
|
## Session
|
||||||
|
SESSION_DRIVER=redis
|
||||||
|
|
||||||
|
## Trusted Proxy
|
||||||
|
TRUST_PROXIES="*"
|
||||||
|
|
||||||
|
## Passport
|
||||||
|
#PASSPORT_PRIVATE_KEY=
|
||||||
|
#PASSPORT_PUBLIC_KEY=
|
|
@ -1,52 +0,0 @@
|
||||||
APP_NAME="Pixelfed Prod"
|
|
||||||
APP_ENV=production
|
|
||||||
APP_KEY=
|
|
||||||
APP_DEBUG=false
|
|
||||||
|
|
||||||
APP_URL=http://localhost
|
|
||||||
APP_DOMAIN="localhost"
|
|
||||||
ADMIN_DOMAIN="localhost"
|
|
||||||
SESSION_DOMAIN="localhost"
|
|
||||||
TRUST_PROXIES="*"
|
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
|
||||||
|
|
||||||
DB_CONNECTION=mysql
|
|
||||||
DB_HOST=db
|
|
||||||
DB_PORT=3306
|
|
||||||
DB_DATABASE=pixelfed
|
|
||||||
DB_USERNAME=pixelfed
|
|
||||||
DB_PASSWORD=pixelfed
|
|
||||||
|
|
||||||
BROADCAST_DRIVER=log
|
|
||||||
CACHE_DRIVER=redis
|
|
||||||
SESSION_DRIVER=redis
|
|
||||||
QUEUE_DRIVER=redis
|
|
||||||
|
|
||||||
REDIS_SCHEME=tcp
|
|
||||||
REDIS_HOST=redis
|
|
||||||
REDIS_PASSWORD=null
|
|
||||||
REDIS_PORT=6379
|
|
||||||
|
|
||||||
MAIL_DRIVER=log
|
|
||||||
MAIL_HOST=smtp.mailtrap.io
|
|
||||||
MAIL_PORT=2525
|
|
||||||
MAIL_USERNAME=null
|
|
||||||
MAIL_PASSWORD=null
|
|
||||||
MAIL_ENCRYPTION=null
|
|
||||||
MAIL_FROM_ADDRESS="pixelfed@example.com"
|
|
||||||
MAIL_FROM_NAME="Pixelfed"
|
|
||||||
|
|
||||||
OPEN_REGISTRATION=true
|
|
||||||
ENFORCE_EMAIL_VERIFICATION=true
|
|
||||||
PF_MAX_USERS=1000
|
|
||||||
|
|
||||||
MAX_PHOTO_SIZE=15000
|
|
||||||
MAX_CAPTION_LENGTH=150
|
|
||||||
MAX_ALBUM_LENGTH=4
|
|
||||||
|
|
||||||
ACTIVITY_PUB=false
|
|
||||||
AP_REMOTE_FOLLOW=false
|
|
||||||
AP_INBOX=false
|
|
||||||
PF_COSTAR_ENABLED=false
|
|
||||||
|
|
35
contrib/docker-nginx.conf
Normal file
35
contrib/docker-nginx.conf
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
upstream fe {
|
||||||
|
server 127.0.0.1:8080;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
server_name real.domain;
|
||||||
|
listen [::]:443 ssl ipv6only=on;
|
||||||
|
listen 443 ssl;
|
||||||
|
ssl_certificate /etc/letsencrypt/live/real.domain/fullchain.pem; # managed by Certbot
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/real.domain/privkey.pem; # managed by Certbot
|
||||||
|
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||||
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-Forwarded-Host $http_x_forwarded_host;
|
||||||
|
proxy_set_header X-Forwarded-Port $http_x_forwarded_port;
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_pass http://fe/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
if ($host = real.domain) {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name real.domain;
|
||||||
|
return 404;
|
||||||
|
}
|
|
@ -1,25 +1,79 @@
|
||||||
FROM php:7.4-apache-buster
|
FROM php:7.4-apache-buster
|
||||||
|
|
||||||
ARG COMPOSER_VERSION="1.9.1"
|
# Use the default production configuration
|
||||||
ARG COMPOSER_CHECKSUM="1f210b9037fcf82670d75892dfc44400f13fe9ada7af9e787f93e50e3b764111"
|
COPY contrib/docker/php.production.ini "$PHP_INI_DIR/php.ini"
|
||||||
|
|
||||||
RUN apt-get update \
|
# Install Composer
|
||||||
&& apt-get install -y --no-install-recommends apt-utils \
|
ENV COMPOSER_VERSION 1.9.2
|
||||||
&& apt-get install -y --no-install-recommends git gosu ffmpeg \
|
ENV COMPOSER_HOME /var/www/.composer
|
||||||
optipng pngquant jpegoptim gifsicle libpq-dev libsqlite3-dev locales zip unzip libzip-dev libcurl4-openssl-dev \
|
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
|
||||||
libfreetype6 libicu-dev libjpeg62-turbo libpng16-16 libxpm4 libwebp6 libmagickwand-6.q16-6 \
|
&& curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
|
||||||
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libwebp-dev libmagickwand-dev mariadb-client\
|
&& php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
|
||||||
&& sed -i '/en_US/s/^#//g' /etc/locale.gen \
|
&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --version=${COMPOSER_VERSION} && rm -rf /tmp/composer-setup.php
|
||||||
&& locale-gen && update-locale \
|
|
||||||
&& docker-php-source extract \
|
# Update OS Packages
|
||||||
&& docker-php-ext-configure gd \
|
RUN apt-get update
|
||||||
|
|
||||||
|
# Install OS Packages
|
||||||
|
RUN apt-get install -y --no-install-recommends apt-utils
|
||||||
|
RUN apt-get install -y --no-install-recommends \
|
||||||
|
## Standard
|
||||||
|
locales locales-all \
|
||||||
|
git \
|
||||||
|
gosu \
|
||||||
|
zip \
|
||||||
|
unzip \
|
||||||
|
libzip-dev \
|
||||||
|
libcurl4-openssl-dev \
|
||||||
|
## Image Optimization
|
||||||
|
optipng \
|
||||||
|
pngquant \
|
||||||
|
jpegoptim \
|
||||||
|
gifsicle \
|
||||||
|
## Image Processing
|
||||||
|
libjpeg62-turbo-dev \
|
||||||
|
libpng-dev \
|
||||||
|
# Required for GD
|
||||||
|
libxpm4 \
|
||||||
|
libxpm-dev \
|
||||||
|
libwebp6 \
|
||||||
|
libwebp-dev \
|
||||||
|
## Video Processing
|
||||||
|
ffmpeg
|
||||||
|
|
||||||
|
# Update Local data
|
||||||
|
RUN sed -i '/en_US/s/^#//g' /etc/locale.gen && locale-gen && update-locale
|
||||||
|
|
||||||
|
# Install PHP extensions
|
||||||
|
RUN docker-php-source extract
|
||||||
|
|
||||||
|
#PHP Imagemagick extensions
|
||||||
|
RUN apt-get install -y --no-install-recommends libmagickwand-dev
|
||||||
|
RUN pecl install imagick
|
||||||
|
RUN docker-php-ext-enable imagick
|
||||||
|
|
||||||
|
# PHP GD extensions
|
||||||
|
RUN docker-php-ext-configure gd \
|
||||||
--with-freetype \
|
--with-freetype \
|
||||||
--with-jpeg \
|
--with-jpeg \
|
||||||
--with-webp \
|
--with-webp \
|
||||||
--with-xpm \
|
--with-xpm
|
||||||
&& docker-php-ext-install pdo_mysql pdo_pgsql pdo_sqlite pcntl gd exif bcmath intl zip curl \
|
RUN docker-php-ext-install "-j$(nproc) gd"
|
||||||
&& docker-php-ext-enable pcntl gd exif zip curl \
|
|
||||||
&& a2enmod rewrite remoteip \
|
#PHP Redis extensions
|
||||||
|
RUN pecl install redis
|
||||||
|
RUN docker-php-ext-enable redis
|
||||||
|
|
||||||
|
#PHP Database extensions
|
||||||
|
RUN apt-get install -y --no-install-recommends libpq-dev libsqlite3-dev
|
||||||
|
RUN docker-php-ext-install pdo_mysql pdo_pgsql pdo_sqlite
|
||||||
|
|
||||||
|
#PHP extensions (dependencies)
|
||||||
|
RUN docker-php-ext-configure intl
|
||||||
|
RUN docker-php-ext-install "-j$(nproc) intl bcmath zip pcntl exif curl"
|
||||||
|
|
||||||
|
#APACHE Bootstrap
|
||||||
|
RUN a2enmod rewrite remoteip \
|
||||||
&& {\
|
&& {\
|
||||||
echo RemoteIPHeader X-Real-IP ;\
|
echo RemoteIPHeader X-Real-IP ;\
|
||||||
echo RemoteIPTrustedProxy 10.0.0.0/8 ;\
|
echo RemoteIPTrustedProxy 10.0.0.0/8 ;\
|
||||||
|
@ -27,45 +81,26 @@ RUN apt-get update \
|
||||||
echo RemoteIPTrustedProxy 192.168.0.0/16 ;\
|
echo RemoteIPTrustedProxy 192.168.0.0/16 ;\
|
||||||
echo SetEnvIf X-Forwarded-Proto "https" HTTPS=on ;\
|
echo SetEnvIf X-Forwarded-Proto "https" HTTPS=on ;\
|
||||||
} > /etc/apache2/conf-available/remoteip.conf \
|
} > /etc/apache2/conf-available/remoteip.conf \
|
||||||
&& a2enconf remoteip \
|
&& a2enconf remoteip
|
||||||
&& curl -LsS https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar -o /usr/bin/composer \
|
|
||||||
&& echo "${COMPOSER_CHECKSUM} /usr/bin/composer" | sha256sum -c - \
|
#Cleanup
|
||||||
&& chmod 755 /usr/bin/composer \
|
RUN docker-php-source delete
|
||||||
&& apt-get autoremove --purge -y \
|
RUN apt-get autoremove --purge -y
|
||||||
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libvpx-dev libmagickwand-dev \
|
RUN apt-get clean
|
||||||
&& rm -rf /var/cache/apt \
|
RUN rm -rf /var/cache/apt
|
||||||
&& docker-php-source delete
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}"
|
ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}"
|
||||||
|
|
||||||
COPY . /var/www/
|
COPY . /var/www/
|
||||||
|
|
||||||
WORKDIR /var/www/
|
WORKDIR /var/www/
|
||||||
RUN cp -r storage storage.skel \
|
|
||||||
&& cp contrib/docker/php.ini /usr/local/etc/php/conf.d/pixelfed.ini \
|
RUN cp -r storage storage.skel
|
||||||
&& composer global require hirak/prestissimo --no-interaction --no-suggest --prefer-dist \
|
RUN composer global require hirak/prestissimo --no-interaction --no-suggest --prefer-dist
|
||||||
&& composer install --prefer-dist --no-interaction \
|
RUN composer install --prefer-dist --no-interaction --no-ansi --optimize-autoloader
|
||||||
&& composer global remove hirak/prestissimo \
|
RUN composer global remove hirak/prestissimo
|
||||||
&& rm -rf html && ln -s public html
|
RUN rm -rf html && ln -s public html
|
||||||
|
|
||||||
VOLUME /var/www/storage /var/www/bootstrap
|
VOLUME /var/www/storage /var/www/bootstrap
|
||||||
|
|
||||||
ENV APP_ENV=production \
|
CMD ["/var/www/contrib/docker/start.apache.sh"]
|
||||||
APP_DEBUG=false \
|
|
||||||
LOG_CHANNEL=stderr \
|
|
||||||
DB_CONNECTION=mysql \
|
|
||||||
DB_PORT=3306 \
|
|
||||||
DB_HOST=db \
|
|
||||||
BROADCAST_DRIVER=log \
|
|
||||||
QUEUE_DRIVER=redis \
|
|
||||||
HORIZON_PREFIX=horizon-pixelfed \
|
|
||||||
REDIS_HOST=redis \
|
|
||||||
SESSION_SECURE_COOKIE=true \
|
|
||||||
API_BASE="/api/1/" \
|
|
||||||
API_SEARCH="/api/search" \
|
|
||||||
OPEN_REGISTRATION=true \
|
|
||||||
ENFORCE_EMAIL_VERIFICATION=true \
|
|
||||||
REMOTE_FOLLOW=false \
|
|
||||||
ACTIVITY_PUB=false
|
|
||||||
|
|
||||||
CMD /var/www/contrib/docker/start.sh
|
|
||||||
|
|
|
@ -1,66 +1,94 @@
|
||||||
FROM php:7.4-fpm-buster
|
FROM php:7.4-fpm-buster
|
||||||
ARG COMPOSER_VERSION="1.9.1"
|
|
||||||
ARG COMPOSER_CHECKSUM="1f210b9037fcf82670d75892dfc44400f13fe9ada7af9e787f93e50e3b764111"
|
|
||||||
|
|
||||||
RUN apt-get update \
|
# Use the default production configuration
|
||||||
&& apt-get install -y --no-install-recommends apt-utils \
|
COPY contrib/docker/php.production.ini "$PHP_INI_DIR/php.ini"
|
||||||
&& apt-get install -y --no-install-recommends git gosu ffmpeg \
|
|
||||||
optipng pngquant jpegoptim gifsicle libpq-dev libsqlite3-dev locales zip unzip libzip-dev libcurl4-openssl-dev \
|
# Install Composer
|
||||||
libfreetype6 libicu-dev libjpeg62-turbo libpng16-16 libxpm4 libwebp6 libmagickwand-6.q16-6 \
|
ENV COMPOSER_VERSION 1.9.2
|
||||||
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libwebp-dev libmagickwand-dev mariadb-client\
|
ENV COMPOSER_HOME /var/www/.composer
|
||||||
&& sed -i '/en_US/s/^#//g' /etc/locale.gen \
|
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
|
||||||
&& locale-gen && update-locale \
|
&& curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
|
||||||
&& docker-php-source extract \
|
&& php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
|
||||||
&& docker-php-ext-configure gd \
|
&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --version=${COMPOSER_VERSION} && rm -rf /tmp/composer-setup.php
|
||||||
|
|
||||||
|
# Update OS Packages
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
# Install OS Packages
|
||||||
|
RUN apt-get install -y --no-install-recommends apt-utils
|
||||||
|
RUN apt-get install -y --no-install-recommends \
|
||||||
|
## Standard
|
||||||
|
locales locales-all \
|
||||||
|
git \
|
||||||
|
gosu \
|
||||||
|
zip \
|
||||||
|
unzip \
|
||||||
|
libzip-dev \
|
||||||
|
libcurl4-openssl-dev \
|
||||||
|
## Image Optimization
|
||||||
|
optipng \
|
||||||
|
pngquant \
|
||||||
|
jpegoptim \
|
||||||
|
gifsicle \
|
||||||
|
## Image Processing
|
||||||
|
libjpeg62-turbo-dev \
|
||||||
|
libpng-dev \
|
||||||
|
# Required for GD
|
||||||
|
libxpm4 \
|
||||||
|
libxpm-dev \
|
||||||
|
libwebp6 \
|
||||||
|
libwebp-dev \
|
||||||
|
## Video Processing
|
||||||
|
ffmpeg
|
||||||
|
|
||||||
|
# Update Local data
|
||||||
|
RUN sed -i '/en_US/s/^#//g' /etc/locale.gen && locale-gen && update-locale
|
||||||
|
|
||||||
|
# Install PHP extensions
|
||||||
|
RUN docker-php-source extract
|
||||||
|
|
||||||
|
#PHP Imagemagick extensions
|
||||||
|
RUN apt-get install -y --no-install-recommends libmagickwand-dev
|
||||||
|
RUN pecl install imagick
|
||||||
|
RUN docker-php-ext-enable imagick
|
||||||
|
|
||||||
|
# PHP GD extensions
|
||||||
|
RUN docker-php-ext-configure gd \
|
||||||
--with-freetype \
|
--with-freetype \
|
||||||
--with-jpeg \
|
--with-jpeg \
|
||||||
--with-webp \
|
--with-webp \
|
||||||
--with-xpm \
|
--with-xpm
|
||||||
&& docker-php-ext-install pdo_mysql pdo_pgsql pdo_sqlite pcntl gd exif bcmath intl zip curl \
|
RUN docker-php-ext-install -j$(nproc) gd
|
||||||
&& docker-php-ext-enable pcntl gd exif zip curl \
|
|
||||||
&& curl -LsS https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar -o /usr/bin/composer \
|
#PHP Redis extensions
|
||||||
&& echo "${COMPOSER_CHECKSUM} /usr/bin/composer" | sha256sum -c - \
|
RUN pecl install redis
|
||||||
&& chmod 755 /usr/bin/composer \
|
RUN docker-php-ext-enable redis
|
||||||
&& apt-get autoremove --purge -y \
|
|
||||||
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libvpx-dev libmagickwand-dev \
|
#PHP Database extensions
|
||||||
&& rm -rf /var/cache/apt \
|
RUN apt-get install -y --no-install-recommends libpq-dev libsqlite3-dev
|
||||||
&& docker-php-source delete
|
RUN docker-php-ext-install pdo_mysql pdo_pgsql pdo_sqlite
|
||||||
|
|
||||||
|
#PHP extensions (dependencies)
|
||||||
|
RUN docker-php-ext-configure intl
|
||||||
|
RUN docker-php-ext-install -j$(nproc) intl bcmath zip pcntl exif curl
|
||||||
|
|
||||||
|
#Cleanup
|
||||||
|
RUN docker-php-source delete
|
||||||
|
RUN apt-get autoremove --purge -y
|
||||||
|
RUN rm -rf /var/cache/apt
|
||||||
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}"
|
ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}"
|
||||||
|
|
||||||
COPY . /var/www/
|
COPY . /var/www/
|
||||||
|
|
||||||
WORKDIR /var/www/
|
WORKDIR /var/www/
|
||||||
RUN cp -r storage storage.skel \
|
|
||||||
&& cp contrib/docker/php.ini /usr/local/etc/php/conf.d/pixelfed.ini \
|
RUN cp -r storage storage.skel
|
||||||
&& composer global require hirak/prestissimo --no-interaction --no-suggest --prefer-dist \
|
RUN composer global require hirak/prestissimo --no-interaction --no-suggest --prefer-dist
|
||||||
&& composer install --prefer-dist --no-interaction \
|
RUN composer install --prefer-dist --no-interaction --no-ansi --optimize-autoloader
|
||||||
&& composer global remove hirak/prestissimo \
|
RUN composer global remove hirak/prestissimo
|
||||||
&& rm -rf html && ln -s public html
|
RUN rm -rf html && ln -s public html
|
||||||
|
|
||||||
VOLUME /var/www/storage /var/www/bootstrap
|
VOLUME /var/www/storage /var/www/bootstrap
|
||||||
|
|
||||||
ENV APP_ENV=production \
|
CMD ["/var/www/contrib/docker/start.fpm.sh"]
|
||||||
APP_DEBUG=false \
|
|
||||||
LOG_CHANNEL=stderr \
|
|
||||||
DB_CONNECTION=mysql \
|
|
||||||
DB_PORT=3306 \
|
|
||||||
DB_HOST=db \
|
|
||||||
BROADCAST_DRIVER=log \
|
|
||||||
QUEUE_DRIVER=redis \
|
|
||||||
HORIZON_PREFIX=horizon-pixelfed \
|
|
||||||
REDIS_HOST=redis \
|
|
||||||
SESSION_SECURE_COOKIE=true \
|
|
||||||
API_BASE="/api/1/" \
|
|
||||||
API_SEARCH="/api/search" \
|
|
||||||
OPEN_REGISTRATION=true \
|
|
||||||
ENFORCE_EMAIL_VERIFICATION=true \
|
|
||||||
REMOTE_FOLLOW=false \
|
|
||||||
ACTIVITY_PUB=false
|
|
||||||
|
|
||||||
CMD cp -r storage.skel/* storage/ \
|
|
||||||
&& chown -R www-data:www-data storage/ \
|
|
||||||
&& php artisan storage:link \
|
|
||||||
&& php artisan migrate --force \
|
|
||||||
&& php artisan update \
|
|
||||||
&& exec php-fpm
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
file_uploads = On
|
|
||||||
memory_limit = 128M
|
|
||||||
upload_max_filesize = 64M
|
|
||||||
post_max_size = 64M
|
|
||||||
max_execution_time = 600
|
|
1916
contrib/docker/php.production.ini
Normal file
1916
contrib/docker/php.production.ini
Normal file
File diff suppressed because it is too large
Load diff
15
contrib/docker/start.apache.sh
Normal file
15
contrib/docker/start.apache.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Create the storage tree if needed and fix permissions
|
||||||
|
cp -r storage.skel/* storage/
|
||||||
|
chown -R www-data:www-data storage/ bootstrap/
|
||||||
|
|
||||||
|
# Refresh the environment
|
||||||
|
php artisan storage:link
|
||||||
|
php artisan horizon:assets
|
||||||
|
php artisan route:cache
|
||||||
|
php artisan view:cache
|
||||||
|
php artisan config:cache
|
||||||
|
|
||||||
|
# Finally run Apache
|
||||||
|
exec apache2-foreground
|
15
contrib/docker/start.fpm.sh
Normal file
15
contrib/docker/start.fpm.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Create the storage tree if needed and fix permissions
|
||||||
|
cp -r storage.skel/* storage/
|
||||||
|
chown -R www-data:www-data storage/ bootstrap/
|
||||||
|
|
||||||
|
# Refresh the environment
|
||||||
|
php artisan storage:link
|
||||||
|
php artisan horizon:assets
|
||||||
|
php artisan route:cache
|
||||||
|
php artisan view:cache
|
||||||
|
php artisan config:cache
|
||||||
|
|
||||||
|
# Finally run FPM
|
||||||
|
exec php-fpm
|
|
@ -1,26 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Create the storage tree if needed and fix permissions
|
|
||||||
cp -r storage.skel/* storage/
|
|
||||||
chown -R www-data:www-data storage/ bootstrap/
|
|
||||||
|
|
||||||
# Refresh the environment
|
|
||||||
php artisan storage:link
|
|
||||||
php artisan horizon:assets
|
|
||||||
php artisan route:cache
|
|
||||||
php artisan view:cache
|
|
||||||
php artisan config:cache
|
|
||||||
|
|
||||||
# Migrate database if the app was upgraded
|
|
||||||
# gosu www-data:www-data php artisan migrate --force
|
|
||||||
|
|
||||||
# Run other specific migratins if required
|
|
||||||
# gosu www-data:www-data php artisan update
|
|
||||||
|
|
||||||
# Run a worker if it is set as embedded
|
|
||||||
if [ "$HORIZON_EMBED" = "true" ]; then
|
|
||||||
gosu www-data:www-data php artisan horizon &
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Finally run Apache
|
|
||||||
exec apache2-foreground
|
|
|
@ -12,50 +12,49 @@ version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
|
## App and Worker
|
||||||
app:
|
app:
|
||||||
# Comment to use dockerhub image
|
# Comment to use dockerhub image
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: contrib/docker/Dockerfile.apache
|
dockerfile: contrib/docker/Dockerfile.apache
|
||||||
#dockerfile: contrib/docker/Dockerfile.fpm
|
|
||||||
image: pixelfed
|
image: pixelfed
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
## If you have a traefik running, uncomment this to expose Pixelfed
|
|
||||||
# labels:
|
|
||||||
# - traefik.enable=true
|
|
||||||
# - traefik.frontend.rule=Host:your.url
|
|
||||||
# - traefik.port=80
|
|
||||||
## If you have a standard reverse proxy, uncommit this to expose Pixelfed
|
|
||||||
# ports:
|
|
||||||
# - "127.0.0.1:8080:80"
|
|
||||||
env_file:
|
env_file:
|
||||||
- ./.env
|
- ./.env.docker
|
||||||
volumes:
|
volumes:
|
||||||
- "app-storage:/var/www/storage"
|
- "app-storage:/var/www/storage"
|
||||||
- "app-bootstrap:/var/www/bootstrap"
|
- "app-bootstrap:/var/www/bootstrap"
|
||||||
- "./.env:/var/www/.env"
|
- "./.env.docker:/var/www/.env"
|
||||||
networks:
|
networks:
|
||||||
- external
|
- external
|
||||||
- internal
|
- internal
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
worker: # Comment this whole block if HORIZON_EMBED is true.
|
worker:
|
||||||
# Comment to use dockerhub image
|
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: contrib/docker/Dockerfile.apache
|
dockerfile: contrib/docker/Dockerfile.apache
|
||||||
#dockerfile: contrib/docker/Dockerfile.fpm
|
|
||||||
image: pixelfed
|
image: pixelfed
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- ./.env
|
- ./.env.docker
|
||||||
volumes:
|
volumes:
|
||||||
- "app-storage:/var/www/storage"
|
- "app-storage:/var/www/storage"
|
||||||
- "app-bootstrap:/var/www/bootstrap"
|
- "app-bootstrap:/var/www/bootstrap"
|
||||||
networks:
|
networks:
|
||||||
- external # Required for ActivityPub
|
- external
|
||||||
- internal
|
- internal
|
||||||
command: gosu www-data php artisan horizon
|
command: gosu www-data php artisan horizon
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
|
## DB and Cache
|
||||||
db:
|
db:
|
||||||
image: mysql:8.0
|
image: mysql:8.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
@ -78,15 +77,14 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- internal
|
- internal
|
||||||
|
|
||||||
# Adjust your volume data in order to store data where you wish
|
|
||||||
volumes:
|
volumes:
|
||||||
redis-data:
|
keydb-data:
|
||||||
db-data:
|
postgres-data:
|
||||||
app-storage:
|
app-storage:
|
||||||
app-bootstrap:
|
app-bootstrap:
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
internal:
|
internal:
|
||||||
internal: true
|
internal: true
|
||||||
external:
|
external:
|
||||||
driver: bridge
|
driver: bridge
|
Loading…
Reference in a new issue