mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2025-12-31 19:47:25 +01:00
Merge pull request #661 from benbrummer/debian
php 8.3 and apt package optimization
This commit is contained in:
75
debian/Dockerfile
vendored
75
debian/Dockerfile
vendored
@@ -1,50 +1,51 @@
|
|||||||
FROM php:8.2-fpm AS base
|
FROM php:8.3-fpm AS base
|
||||||
|
|
||||||
ARG saxon=12.5.0
|
ARG saxon=12.5.0
|
||||||
|
|
||||||
# Install system dependencies
|
# Install system dependencies
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
curl \
|
curl \
|
||||||
default-mysql-client \
|
|
||||||
fonts-liberation \
|
|
||||||
fonts-noto-cjk \
|
|
||||||
fonts-noto-cjk-extra \
|
|
||||||
fonts-wqy-microhei \
|
|
||||||
fonts-wqy-zenhei \
|
|
||||||
git \
|
|
||||||
gnupg2 \
|
gnupg2 \
|
||||||
gosu \
|
gosu \
|
||||||
libasound2 \
|
|
||||||
libatk-bridge2.0-0 \
|
|
||||||
libatk1.0-0 \
|
|
||||||
libatspi2.0-0 \
|
|
||||||
libcups2 \
|
|
||||||
libdbus-1-3 \
|
|
||||||
libdrm2 \
|
|
||||||
libgbm1 \
|
|
||||||
libgtk-3-0 \
|
|
||||||
libnspr4 \
|
|
||||||
libnss3 \
|
|
||||||
libonig-dev \
|
|
||||||
libpng-dev \
|
|
||||||
libwayland-client0 \
|
|
||||||
libxcomposite1 \
|
|
||||||
libxdamage1 \
|
|
||||||
libxfixes3 \
|
|
||||||
libxkbcommon0 \
|
|
||||||
libxml2-dev \
|
|
||||||
libxrandr2 \
|
|
||||||
supervisor \
|
supervisor \
|
||||||
unzip \
|
|
||||||
wget \
|
|
||||||
xdg-utils \
|
|
||||||
xfonts-wqy \
|
|
||||||
zip \
|
|
||||||
&& if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
|
&& if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
|
||||||
mkdir -p /etc/apt/keyrings \
|
mkdir -p /etc/apt/keyrings \
|
||||||
&& curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/keyrings/google.gpg \
|
&& curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/keyrings/google.gpg \
|
||||||
&& echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google.gpg] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \
|
&& echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google.gpg] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install -y google-chrome-stable; \
|
&& apt-get install -y --no-install-recommends google-chrome-stable; \
|
||||||
|
fi \
|
||||||
|
&& if [ "$(dpkg --print-architecture)" = "arm64" ]; then \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
default-mysql-client \
|
||||||
|
fonts-liberation \
|
||||||
|
fonts-noto-cjk \
|
||||||
|
fonts-noto-cjk-extra \
|
||||||
|
fonts-wqy-microhei \
|
||||||
|
fonts-wqy-zenhei \
|
||||||
|
libasound2 \
|
||||||
|
libatk-bridge2.0-0 \
|
||||||
|
libatk1.0-0 \
|
||||||
|
libatspi2.0-0 \
|
||||||
|
libcups2 \
|
||||||
|
libdbus-1-3 \
|
||||||
|
libdrm2 \
|
||||||
|
libgbm1 \
|
||||||
|
libgtk-3-0 \
|
||||||
|
libnspr4 \
|
||||||
|
libnss3 \
|
||||||
|
libonig-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libwayland-client0 \
|
||||||
|
libxcomposite1 \
|
||||||
|
libxdamage1 \
|
||||||
|
libxfixes3 \
|
||||||
|
libxkbcommon0 \
|
||||||
|
libxml2-dev \
|
||||||
|
libxrandr2 \
|
||||||
|
supervisor \
|
||||||
|
xdg-utils \
|
||||||
|
xfonts-wqy; \
|
||||||
fi \
|
fi \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
@@ -69,12 +70,10 @@ RUN mkdir -p /tmp/chrome \
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy Install PHP extensions installer
|
# Copy Install PHP extensions installer
|
||||||
#COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
|
|
||||||
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
||||||
|
|
||||||
# Install Required PHP extensions.
|
# Install Required PHP extensions.
|
||||||
RUN install-php-extensions \
|
RUN install-php-extensions \
|
||||||
#RUN docker-php-ext-install \
|
|
||||||
bcmath \
|
bcmath \
|
||||||
exif \
|
exif \
|
||||||
gd \
|
gd \
|
||||||
@@ -92,8 +91,6 @@ RUN install-php-extensions \
|
|||||||
|
|
||||||
# Configure PHP
|
# Configure PHP
|
||||||
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
||||||
COPY php/php.ini /usr/local/etc/php/conf.d/app.ini
|
|
||||||
COPY php/php-fpm.conf /usr/local/etc/php-fpm.d/www.conf
|
|
||||||
|
|
||||||
# Copy scripts
|
# Copy scripts
|
||||||
COPY rootfs /
|
COPY rootfs /
|
||||||
|
|||||||
29
debian/docker-compose.yml
vendored
29
debian/docker-compose.yml
vendored
@@ -6,13 +6,17 @@ x-logging: &default-logging
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
image: invoiceninja/invoiceninja-debian:latest
|
build:
|
||||||
|
context: .
|
||||||
|
image: invoiceninja/invoiceninja-debian:${TAG:-latest}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- ./.env
|
- ./.env
|
||||||
volumes:
|
volumes:
|
||||||
- ./.env:/var/www/html/.env
|
- ./.env:/var/www/html/.env:ro
|
||||||
- ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf
|
- ./php/php.ini:/usr/local/etc/php/conf.d/zzz-php.ini:ro
|
||||||
|
- ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/zzz-php-fpm.conf:ro
|
||||||
|
- ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
|
||||||
- app_storage:/var/www/html/storage
|
- app_storage:/var/www/html/storage
|
||||||
- app_cache:/var/www/html/bootstrap/cache
|
- app_cache:/var/www/html/bootstrap/cache
|
||||||
- image_public:/var/www/html/public:ro
|
- image_public:/var/www/html/public:ro
|
||||||
@@ -23,10 +27,6 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 512M
|
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
@@ -35,18 +35,13 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
volumes:
|
volumes:
|
||||||
- ./nginx/conf.d:/etc/nginx/conf.d:ro
|
- ./nginx:/etc/nginx/conf.d:ro
|
||||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
|
||||||
- app_storage:/var/www/html/storage:ro
|
- app_storage:/var/www/html/storage:ro
|
||||||
- image_public:/var/www/html/public:ro
|
- image_public:/var/www/html/public:ro
|
||||||
networks:
|
networks:
|
||||||
- app-network
|
- app-network
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 128M
|
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
|
||||||
mysql:
|
mysql:
|
||||||
@@ -77,10 +72,6 @@ services:
|
|||||||
interval: 10s
|
interval: 10s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 1G
|
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
@@ -95,10 +86,6 @@ services:
|
|||||||
interval: 10s
|
interval: 10s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
deploy:
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 256M
|
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
36
debian/nginx/conf.d/default.conf
vendored
36
debian/nginx/conf.d/default.conf
vendored
@@ -1,36 +0,0 @@
|
|||||||
server {
|
|
||||||
|
|
||||||
error_log /var/log/nginx/error.log debug;
|
|
||||||
access_log /var/log/nginx/access.log;
|
|
||||||
|
|
||||||
listen 80 default_server;
|
|
||||||
server_name _;
|
|
||||||
|
|
||||||
server_tokens off;
|
|
||||||
|
|
||||||
root /var/www/html/public;
|
|
||||||
index index.php;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ /index.php?$query_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /favicon.ico { access_log off; log_not_found off; }
|
|
||||||
location = /robots.txt { access_log off; log_not_found off; }
|
|
||||||
|
|
||||||
|
|
||||||
location ~* /storage/.*\.php$ {
|
|
||||||
return 503;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ \.php$ {
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
fastcgi_pass app:9000;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
||||||
fastcgi_intercept_errors off;
|
|
||||||
fastcgi_buffer_size 16k;
|
|
||||||
fastcgi_buffers 4 16k;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
9
debian/nginx/invoiceninja.conf
vendored
Normal file
9
debian/nginx/invoiceninja.conf
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
client_max_body_size 100M;
|
||||||
|
client_body_buffer_size 100M;
|
||||||
|
|
||||||
|
fastcgi_buffer_size 16k;
|
||||||
|
fastcgi_buffers 4 16k;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
|
||||||
|
server_tokens off;
|
||||||
31
debian/nginx/laravel.conf
vendored
Normal file
31
debian/nginx/laravel.conf
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
server_name _;
|
||||||
|
root /var/www/html/public;
|
||||||
|
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN";
|
||||||
|
add_header X-Content-Type-Options "nosniff";
|
||||||
|
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /favicon.ico { access_log off; log_not_found off; }
|
||||||
|
location = /robots.txt { access_log off; log_not_found off; }
|
||||||
|
|
||||||
|
error_page 404 /index.php;
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass app:9000;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
29
debian/nginx/nginx.conf
vendored
29
debian/nginx/nginx.conf
vendored
@@ -1,29 +0,0 @@
|
|||||||
user nginx;
|
|
||||||
worker_processes auto;
|
|
||||||
error_log /var/log/nginx/error.log notice;
|
|
||||||
pid /var/run/nginx.pid;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
||||||
'$status $body_bytes_sent "$http_referer" '
|
|
||||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
||||||
|
|
||||||
access_log /var/log/nginx/access.log main;
|
|
||||||
error_log /var/log/nginx/error.log;
|
|
||||||
|
|
||||||
sendfile on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
gzip on;
|
|
||||||
|
|
||||||
client_max_body_size 100M;
|
|
||||||
client_body_buffer_size 100M;
|
|
||||||
|
|
||||||
include /etc/nginx/conf.d/*.conf;
|
|
||||||
}
|
|
||||||
7
debian/php/php-fpm.conf
vendored
7
debian/php/php-fpm.conf
vendored
@@ -1,9 +1,2 @@
|
|||||||
[www]
|
[www]
|
||||||
user = www-data
|
|
||||||
group = www-data
|
|
||||||
listen = 0.0.0.0:9000
|
|
||||||
pm = dynamic
|
|
||||||
pm.max_children = 10
|
pm.max_children = 10
|
||||||
pm.start_servers = 2
|
|
||||||
pm.min_spare_servers = 1
|
|
||||||
pm.max_spare_servers = 3
|
|
||||||
9
debian/php/php.ini
vendored
9
debian/php/php.ini
vendored
@@ -1,13 +1,8 @@
|
|||||||
session.auto_start = Off
|
memory_limit=512M
|
||||||
short_open_tag = Off
|
|
||||||
|
|
||||||
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
|
|
||||||
|
|
||||||
opcache.enable=1
|
opcache.enable=1
|
||||||
opcache.preload=/var/www/html/preload.php
|
opcache.preload=/var/www/html/preload.php
|
||||||
opcache.preload_user=www-data
|
opcache.preload_user=www-data
|
||||||
|
|
||||||
; ; The OPcache shared memory storage size.
|
|
||||||
opcache.max_accelerated_files=300000
|
opcache.max_accelerated_files=300000
|
||||||
opcache.validate_timestamps=1
|
opcache.validate_timestamps=1
|
||||||
opcache.revalidate_freq=30
|
opcache.revalidate_freq=30
|
||||||
@@ -15,7 +10,5 @@ opcache.jit_buffer_size=256M
|
|||||||
opcache.jit=1205
|
opcache.jit=1205
|
||||||
opcache.memory_consumption=1024M
|
opcache.memory_consumption=1024M
|
||||||
|
|
||||||
|
|
||||||
post_max_size = 60M
|
post_max_size = 60M
|
||||||
upload_max_filesize = 50M
|
upload_max_filesize = 50M
|
||||||
memory_limit=512M
|
|
||||||
|
|||||||
1
debian/supervisor/supervisord.conf
vendored
1
debian/supervisor/supervisord.conf
vendored
@@ -43,7 +43,6 @@ command=/bin/sh -c "while [ true ]; do (php /var/www/html/artisan schedule:run -
|
|||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
user=www-data
|
user=www-data
|
||||||
redirect_stderr=true
|
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/stdout
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
stderr_logfile=/dev/stderr
|
stderr_logfile=/dev/stderr
|
||||||
|
|||||||
Reference in New Issue
Block a user