Improve docker build to use hooks

This commit is contained in:
Frédéric Guillot 2017-11-30 16:47:52 -08:00
parent 12202f0451
commit 55547db6ce
16 changed files with 161 additions and 20 deletions

View File

@ -17,3 +17,4 @@ Vagrantfile
web.config
bower_components
node_modules
hooks

1
.gitattributes vendored
View File

@ -21,6 +21,7 @@ composer.json export-ignore
composer.lock export-ignore
gulpfile.js export-ignore
package.json export-ignore
hooks export-ignore
assets/sass export-ignore
assets/js/components export-ignore

View File

@ -1,12 +1,30 @@
FROM fguillot/alpine-nginx-php7
COPY . /var/www/app
COPY docker/kanboard/config.php /var/www/app/config.php
COPY docker/crontab/cronjob.alpine /var/spool/cron/crontabs/nginx
COPY docker/services.d/cron /etc/services.d/cron
COPY docker/php/env.conf /etc/php7/php-fpm.d/env.conf
RUN chown -R nginx:nginx /var/www/app/data /var/www/app/plugins
FROM alpine:3.6
VOLUME /var/www/app/data
VOLUME /var/www/app/plugins
EXPOSE 80
ARG VERSION
RUN apk update && \
apk add unzip nginx bash ca-certificates s6 curl ssmtp mailx php7 php7-phar php7-curl \
php7-fpm php7-json php7-zlib php7-xml php7-dom php7-ctype php7-opcache php7-zip php7-iconv \
php7-pdo php7-pdo_mysql php7-pdo_sqlite php7-pdo_pgsql php7-mbstring php7-session \
php7-gd php7-mcrypt php7-openssl php7-sockets php7-posix php7-ldap php7-simplexml && \
rm -rf /var/cache/apk/* && \
rm -rf /var/www/localhost && \
rm -f /etc/php7/php-fpm.d/www.conf
RUN cd /tmp \
&& curl -sL -o kb.zip https://github.com/kanboard/kanboard/archive/$VERSION.zip \
&& unzip -qq kb.zip \
&& cd kanboard-* \
&& cp -R . /var/www/app \
&& cd /tmp \
&& rm -rf /tmp/kanboard-* /tmp/*.zip
ADD docker/ /
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD []

View File

@ -73,12 +73,6 @@ sql:
@ grep -v "SET idle_in_transaction_session_timeout = 0;" app/Schema/Sql/postgres.sql > temp && mv temp app/Schema/Sql/postgres.sql
docker-image:
@ docker build -t kanboard/kanboard:latest .
docker-push:
@ docker push kanboard/kanboard:latest
docker-run:
@ docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest
@ IMAGE_NAME=kanboard/kanboard:latest ./hooks/build
.PHONY: all

View File

@ -0,0 +1,69 @@
user nginx;
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
server_tokens off;
access_log off;
error_log /dev/stderr;
server {
listen 80;
server_name localhost;
index index.php;
root /var/www/app;
client_max_body_size 32M;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
location ~* ^.+\.(log|sqlite)$ {
return 404;
}
location ~ /\.ht {
return 404;
}
location ~* ^.+\.(ico|jpg|gif|png|css|js|svg|eot|ttf|woff|woff2|otf)$ {
log_not_found off;
expires 7d;
etag on;
}
gzip on;
gzip_comp_level 3;
gzip_disable "msie6";
gzip_vary on;
gzip_types
text/javascript
application/javascript
application/json
text/xml
application/xml
application/rss+xml
text/css
text/plain;
}
}

View File

@ -0,0 +1,15 @@
expose_php = Off
error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /dev/stderr
date.timezone = UTC
allow_url_fopen = On
post_max_size = 32M
upload_max_filesize = 32M
opcache.max_accelerated_files = 7963
opcache.validate_timestamps = Off
opcache.save_comments = 0
opcache.load_comments = 0
opcache.fast_shutdown = 1
opcache.enable_file_override = On

View File

@ -0,0 +1,19 @@
[global]
error_log = /proc/self/fd/2
log_level = error
daemonize = no
[www]
catch_workers_output = yes
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /var/run/php-fpm.sock
pm = dynamic
pm.max_children = 20
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 2048
include = /etc/php7/php-fpm.d/env.conf

View File

@ -0,0 +1,2 @@
#!/bin/sh
/bin/true

View File

@ -0,0 +1,3 @@
#!/bin/execlineb -P
nginx -g "daemon off;"

2
docker/etc/services.d/php/run Executable file
View File

@ -0,0 +1,2 @@
#!/bin/execlineb -P
php-fpm7 -F

View File

@ -1,4 +0,0 @@
<?php
define('ENABLE_URL_REWRITE', true);
define('LOG_DRIVER', 'stderr');

View File

@ -0,0 +1,6 @@
#!/bin/bash
chown -R nginx:nginx /var/www/app/data
chown -R nginx:nginx /var/www/app/plugins
exec /bin/s6-svscan /etc/services.d

15
hooks/build Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
VERSION=master
if [ "$SOURCE_BRANCH" != "" ]; then
VERSION=$SOURCE_BRANCH
if [ "$SOURCE_BRANCH" == "latest" ]; then
VERSION=master
fi
fi
echo "Building $VERSION"
docker build --build-arg VERSION=$VERSION -t $IMAGE_NAME .