Initial commit.
This commit is contained in:
commit
6c197985df
42
.drone.yml
Normal file
42
.drone.yml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: build
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: notify-start
|
||||||
|
image: pztrn/discordrone
|
||||||
|
settings:
|
||||||
|
webhook_id:
|
||||||
|
from_secret: discord_webhook_id
|
||||||
|
webhook_token:
|
||||||
|
from_secret: discord_webhook_secret
|
||||||
|
message: 'Starting building **{{repo.name}}#{{build.number}}@{{build.commit}}** @ {{datetime build.started "02-Jan-2006 15:04:05 MST" "Asia/Yekaterinburg"}} (See {{build.link}} for logs).'
|
||||||
|
|
||||||
|
- name: docker
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
username:
|
||||||
|
from_secret: dockerhub_user
|
||||||
|
password:
|
||||||
|
from_secret: dockerhub_password
|
||||||
|
repo: pztrn/rainloop
|
||||||
|
auto_tag: true
|
||||||
|
|
||||||
|
- name: notify-end
|
||||||
|
when:
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
- failure
|
||||||
|
image: pztrn/discordrone
|
||||||
|
settings:
|
||||||
|
webhook_id:
|
||||||
|
from_secret: discord_webhook_id
|
||||||
|
webhook_token:
|
||||||
|
from_secret: discord_webhook_secret
|
||||||
|
message: "
|
||||||
|
{{#success build.status}}
|
||||||
|
**{{repo.name}}#{{build.number}}@{{build.commit}}** deployed.
|
||||||
|
{{ else }}
|
||||||
|
**{{repo.name}}#{{build.number}}@{{build.commit}}** failed. See {{build.link}}.
|
||||||
|
{{/success}}"
|
45
Dockerfile
Normal file
45
Dockerfile
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
FROM alpine:3.11
|
||||||
|
|
||||||
|
# Install necessary things
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
git \
|
||||||
|
nginx \
|
||||||
|
php7-curl \
|
||||||
|
php7-dom \
|
||||||
|
php7-fpm \
|
||||||
|
php7-iconv \
|
||||||
|
php7-json \
|
||||||
|
php7-openssl \
|
||||||
|
php7-pdo_mysql \
|
||||||
|
php7-pdo_pgsql \
|
||||||
|
php7-pdo_sqlite \
|
||||||
|
php7-xml \
|
||||||
|
s6 \
|
||||||
|
unzip \
|
||||||
|
wget && \
|
||||||
|
rm /etc/nginx/conf.d/default.conf && \
|
||||||
|
rm /etc/php7/php-fpm.d/www.conf && \
|
||||||
|
mkdir /var/run/nginx && \
|
||||||
|
chown -R nginx:nginx /var/run/nginx
|
||||||
|
|
||||||
|
# Get rainloop.
|
||||||
|
RUN mkdir -p /var/www/rainloop && \
|
||||||
|
cd /var/www/rainloop && \
|
||||||
|
wget https://github.com/RainLoop/rainloop-webmail/releases/download/v1.13.0/rainloop-community-1.13.0.zip && \
|
||||||
|
ls -la && \
|
||||||
|
unzip rainloop-community-*.zip && \
|
||||||
|
chown -R nginx:nginx /var/www/rainloop && \
|
||||||
|
rm *.zip
|
||||||
|
|
||||||
|
# Configure container
|
||||||
|
COPY configs/ /etc/
|
||||||
|
|
||||||
|
# Configure s6.
|
||||||
|
RUN chmod -R +x /etc/s6/* \
|
||||||
|
&& chmod +x /etc/s6/.s6-svscan/finish
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
VOLUME [ "/var/www/rainloop/data" ]
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/s6-svscan", "/etc/s6"]
|
7
README.md
Normal file
7
README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Rainloop webmail Docker container
|
||||||
|
|
||||||
|
This repository contains Rainloop webmail Docker container build scripts and neccessary configuration files.
|
||||||
|
|
||||||
|
## Persistent things
|
||||||
|
|
||||||
|
There are some things that should be preserved between container's restarts. Please, add new volume for ``/var/www/rainloop/data`` directory.
|
49
configs/nginx/conf.d/rainloop.conf
Normal file
49
configs/nginx/conf.d/rainloop.conf
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
server {
|
||||||
|
listen 80 default;
|
||||||
|
server_name localhost _;
|
||||||
|
root /var/www/rainloop;
|
||||||
|
|
||||||
|
index index.php index.html;
|
||||||
|
|
||||||
|
autoindex on;
|
||||||
|
charset utf-8;
|
||||||
|
client_max_body_size 500m;
|
||||||
|
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_disable "msie6";
|
||||||
|
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
|
||||||
|
gzip_vary on;
|
||||||
|
|
||||||
|
access_log /dev/stdout main;
|
||||||
|
error_log /dev/stdout info;
|
||||||
|
|
||||||
|
location = /favicon.ico { access_log off; log_not_found off; }
|
||||||
|
location ~* favicon\.(ico|png)$ { access_log off; log_not_found off; }
|
||||||
|
location = /browserconfig.xml { access_log off; log_not_found off; }
|
||||||
|
location = /robots.txt { access_log off; log_not_found off; }
|
||||||
|
location = /humans.txt { access_log off; log_not_found off; }
|
||||||
|
location = /apple-touch-icon.png { access_log off; log_not_found off; }
|
||||||
|
location = /apple-touch-icon-precomposed.png { access_log off; log_not_found off; }
|
||||||
|
location ~ /\.ht { deny all; return 404; }
|
||||||
|
location ~ /\.git { deny all; return 404; }
|
||||||
|
location ~ /\.svn { deny all; return 404; }
|
||||||
|
location ^~ /data { deny all; return 404; }
|
||||||
|
|
||||||
|
location ~* ^.+\.(?:jpe?g|gif|bmp|ico|png|css|js|swf)$ {
|
||||||
|
expires 30d;
|
||||||
|
access_log off;
|
||||||
|
add_header Pragma public;
|
||||||
|
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php(/|$) {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param HTTPS off;
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
}
|
||||||
|
}
|
92
configs/nginx/nginx.conf
Normal file
92
configs/nginx/nginx.conf
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
user nginx;
|
||||||
|
|
||||||
|
# Set number of worker processes automatically based on number of CPU cores.
|
||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
# Enables the use of JIT for regular expressions to speed-up their processing.
|
||||||
|
pcre_jit on;
|
||||||
|
|
||||||
|
# Configures default error logger.
|
||||||
|
error_log /dev/stdout info;
|
||||||
|
|
||||||
|
# Includes files with directives to load dynamic modules.
|
||||||
|
include /etc/nginx/modules/*.conf;
|
||||||
|
|
||||||
|
daemon off;
|
||||||
|
|
||||||
|
events {
|
||||||
|
# The maximum number of simultaneous connections that can be opened by
|
||||||
|
# a worker process.
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
# Includes mapping of file name extensions to MIME types of responses
|
||||||
|
# and defines the default type.
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
# Name servers used to resolve names of upstream servers into addresses.
|
||||||
|
# It's also needed when using tcpsocket and udpsocket in Lua modules.
|
||||||
|
#resolver 208.67.222.222 208.67.220.220;
|
||||||
|
|
||||||
|
# Don't tell nginx version to clients.
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
# Specifies the maximum accepted body size of a client request, as
|
||||||
|
# indicated by the request header Content-Length. If the stated content
|
||||||
|
# length is greater than this size, then the client receives the HTTP
|
||||||
|
# error code 413. Set to 0 to disable.
|
||||||
|
client_max_body_size 1m;
|
||||||
|
|
||||||
|
# Timeout for keep-alive connections. Server will close connections after
|
||||||
|
# this time.
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
# Sendfile copies data between one FD and other from within the kernel,
|
||||||
|
# which is more efficient than read() + write().
|
||||||
|
sendfile on;
|
||||||
|
|
||||||
|
# Don't buffer data-sends (disable Nagle algorithm).
|
||||||
|
# Good for sending frequent small bursts of data in real time.
|
||||||
|
tcp_nodelay on;
|
||||||
|
|
||||||
|
# Causes nginx to attempt to send its HTTP response head in one packet,
|
||||||
|
# instead of using partial frames.
|
||||||
|
#tcp_nopush on;
|
||||||
|
|
||||||
|
|
||||||
|
# Path of the file with Diffie-Hellman parameters for EDH ciphers.
|
||||||
|
#ssl_dhparam /etc/ssl/nginx/dh2048.pem;
|
||||||
|
|
||||||
|
# Specifies that our cipher suits should be preferred over client ciphers.
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
# Enables a shared SSL cache with size that can hold around 8000 sessions.
|
||||||
|
ssl_session_cache shared:SSL:2m;
|
||||||
|
|
||||||
|
|
||||||
|
# Enable gzipping of responses.
|
||||||
|
#gzip on;
|
||||||
|
|
||||||
|
# Set the Vary HTTP header as defined in the RFC 2616.
|
||||||
|
gzip_vary on;
|
||||||
|
|
||||||
|
# Enable checking the existence of precompressed files.
|
||||||
|
#gzip_static on;
|
||||||
|
|
||||||
|
|
||||||
|
# Specifies the main log format.
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
# Sets the path, format, and configuration for a buffered log write.
|
||||||
|
access_log /dev/stdout main;
|
||||||
|
|
||||||
|
|
||||||
|
# Includes virtual hosts configs.
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
}
|
4
configs/php7/php-fpm.conf
Normal file
4
configs/php7/php-fpm.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[global]
|
||||||
|
pid = /var/run/php-fpm7.pid
|
||||||
|
|
||||||
|
include=/etc/php7/php-fpm.d/*.conf
|
31
configs/php7/php-fpm.d/www.conf
Normal file
31
configs/php7/php-fpm.d/www.conf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
[rainloop]
|
||||||
|
user = nginx
|
||||||
|
group = nginx
|
||||||
|
|
||||||
|
listen = 127.0.0.1:9000
|
||||||
|
|
||||||
|
listen.owner = nginx
|
||||||
|
listen.group = nginx
|
||||||
|
|
||||||
|
listen.allowed_clients = 127.0.0.1
|
||||||
|
|
||||||
|
pm = dynamic
|
||||||
|
pm.max_children = 40
|
||||||
|
pm.start_servers = 4
|
||||||
|
pm.min_spare_servers = 4
|
||||||
|
pm.max_spare_servers = 36
|
||||||
|
pm.process_idle_timeout = 10s;
|
||||||
|
pm.max_requests = 100
|
||||||
|
|
||||||
|
catch_workers_output = yes
|
||||||
|
|
||||||
|
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||||
|
; the current environment.
|
||||||
|
; Default Value: clean env
|
||||||
|
env[HOSTNAME] = $HOSTNAME
|
||||||
|
env[PATH] = /usr/local/bin:/usr/bin:/bin
|
||||||
|
env[TMP] = /tmp
|
||||||
|
env[TMPDIR] = /tmp
|
||||||
|
env[TEMP] = /tmp
|
||||||
|
|
||||||
|
php_admin_value[memory_limit] = 128M
|
1945
configs/php7/php.ini
Normal file
1945
configs/php7/php.ini
Normal file
File diff suppressed because it is too large
Load Diff
5
configs/s6/.s6-svscan/finish
Normal file
5
configs/s6/.s6-svscan/finish
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for file in /etc/s6/*/finish; do
|
||||||
|
$file
|
||||||
|
done
|
3
configs/s6/nginx/finish
Normal file
3
configs/s6/nginx/finish
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
kill `cat /var/run/nginx/nginx.pid`
|
3
configs/s6/nginx/run
Normal file
3
configs/s6/nginx/run
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
|
||||||
|
/usr/sbin/nginx
|
3
configs/s6/php-fpm/finish
Normal file
3
configs/s6/php-fpm/finish
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
kill `cat /var/run/php-fpm7.pid`
|
3
configs/s6/php-fpm/run
Normal file
3
configs/s6/php-fpm/run
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
|
||||||
|
/usr/sbin/php-fpm7 -F
|
Loading…
Reference in New Issue
Block a user