Commit d57d3a01 authored by Ulf Seltmann's avatar Ulf Seltmann
Browse files

initial commit after split-up

parents
*
!assets
\ No newline at end of file
stages:
- image
nginx_image:
stage: image
image: docker:latest
services:
- docker:dind
script: |
mkdir -p ~/.docker && echo "$DOCKER_AUTH_CONFIG" >~/.docker/config.json
export version=`expr ${CI_COMMIT_TAG} ':' '\([^-]\+\)'`
export major_version=`expr ${version} ':' '\([^.]\+\)'`
export minor_version=`expr ${version} ':' '[^.]\+\.\([^-]\+\)'`
export suffix=`expr ${CI_COMMIT_TAG} ':' '[^-]\+-\(.*\)'`
docker build --pull -t ubleipzig/vufind-nginx:${version}-${suffix} -f ${version}/Dockerfile .
docker push ubleipzig/vufind-nginx:${version}-${suffix}
for tag in "latest" "${major_version}" "${version}"; do
if [ "$tag" == "latest" -a "${version}" != "1.13" ]; then continue; fi
if [ "$tag" == "1" -a "${version}" != "1.13" ]; then continue; fi
docker tag ubleipzig/vufind-nginx:${version}-${suffix} ubleipzig/vufind-nginx:${tag}
docker push ubleipzig/vufind-nginx:${tag}
done
tags:
- docker
only:
- /.*/
except:
- branches
FROM nginx:1.13-alpine
ENTRYPOINT [ "/docker-entrypoint" ]
CMD [ "nginx", "-g", "daemon off;" ]
ENV BASE_PATH=""
ADD assets/docker-entrypoint /docker-entrypoint
RUN chmod a+x /docker-entrypoint
ADD assets/nginx.conf /etc/nginx/conf.d/default.conf
\ No newline at end of file
# vufind-nginx
*vufind-nginx* is an alternative webserver for [VuFind] and can be used analog to [vufind-httpd]. The base-image is [nginx:alpine].
As for [vufind-httpd] the images are extended by a default configuration with [VuFind]-specific configuration. The configuration expects the [VuFind]-Sources under `/usr/local/vufind`, and the cache-files which are built at [VuFind]-runtime under `/var/cache/vufind`.
Also i created a new *entrypoint* that modifies the configuration based on the value from the environment variable `BASE_PATH`. If you want to access [VuFind] unter http://localhost/vufind you need to provide the environment variable `BASE_PATH=/vufind` on container-create.
## supported tags
* 1.13-*, 1.13, 1, latest ([1.13/Dockerfile])
## Usage of the image
As for [vufind-httpd] the usage makes only sense in connection with with [vufind-php], which provides the application server of [VuFind]. The server needs to be available as host *php*. Also the [VuFind]-files need to be connected to the container, so that the webserver can serve static content. [VuFind] creates additional cache-files, which have to be served by the webserver. This folder needs to be connected to the container as well.
```
$# docker run --name nginx \
--link php:php \
--volume /path/to/vufind:/usr/local/vufind:ro \
--volume /path/to/cache:/var/cache/vufind:ro \
--environment BASE_PATH=/vufind
ubleipzig/vufind-nginx
```
## Anmerkungen
* Das *vufind1*-Image existiert, um Entwicklern das Umschalten zu VuFind1-Instanzen so einfach wie möglich zu machen. Hier wird keine weitere Arbeit investiert, z.B. funktioniert die Pfad-Konfiguration über die `BASE_PATH`-Variable nicht.
* es müssen Tests geschrieben werden, sobald ich weiß, wie man das für Docker-Images am besten macht
[vufind-httpd]: https://hub.docker.com/r/ubleipzig/vufind-httpd/
[nginx:alpine]: https://hub.docker.com/_/nginx/
[1.13/Dockerfile]: https://git.sc.uni-leipzig.de/ubl/bdd_dev/docker/vufind-nginx/blob/master/1.13/Dockerfile
This diff is collapsed.
# vufind-nginx
*vufind-nginx* steht als alternativer Webserver zur Verfügung und kann statt [vufind-httpd] verwendet werden.
Das Basis-Image ist [nginx:alpine].
Ebenso wie beim [vufind-httpd]-Image werden VuFind-Dateien erwartet und der `BASE_PATH` zum Konfigurieren
des Pfad-Anteils gesetzt
## Unterstützte tags
* 1.13-*, 1.13, 1, latest ([1.13/Dockerfile])
## Nutzung des Images
Die Nutzung erfolgt analog zu der von [vufind-httpd]:
```
$# docker run --name nginx \
--link php:php \
--volume /path/to/vufind:/usr/local/vufind:ro \
--volume /path/to/cache:/var/cache/vufind:ro \
--environment BASE_PATH=/vufind
ubleipzig/vufind-nginx
```
## Anmerkungen
* Das *vufind1*-Image existiert, um Entwicklern das Umschalten zu VuFind1-Instanzen so einfach wie möglich zu machen. Hier wird keine weitere Arbeit investiert, z.B. funktioniert die Pfad-Konfiguration über die `BASE_PATH`-Variable nicht.
* es müssen Tests geschrieben werden, sobald ich weiß, wie man das für Docker-Images am besten macht
[vufind-httpd]: https://hub.docker.com/r/ubleipzig/vufind-httpd/
[nginx:alpine]: https://hub.docker.com/_/nginx/
[1.13/Dockerfile]: https://git.sc.uni-leipzig.de/ubl/bdd_dev/docker/vufind-nginx/blob/master/1.13/Dockerfile
# Docker-VuFind
How VuFind can be deployed using Docker-Images, regardless of the environment.
---
Ziel dieses Projektes ist es, ein Set an Docker-Images zur Verfügung zu stellen, die für Entwicklungs-
Test- und Produktivumgebungen geeignet ist. Alle Dienste, die von VuFind benötigt werden, werden in
eigenen Images gekapselt. Die Schnittstellen zwischen den Diensten beschränken sich auf Datei- und
Netzwerk-Ebene.
## Services
Folgende Services sind im Ökosystem VuFind beteiligt. Nicht enthalten sind die Quellen von VuFind
selbst. Diese müssen per Volume-Bind zur Verfügung gestellt werden.
## Todo
* Solr
* Entwicklerwerkzeuge
* Tests
[1]: https://store.docker.com/images/httpd
[2]: https://store.docker.com/images/nginx
[3]: https://ubleipzig.github.io/autoconfig/
\ No newline at end of file
#!/bin/sh
set -e
sed -e 's!location \(/themes\|/cache\|\)/\s!location '${BASE_PATH}'\1/ !' -i /etc/nginx/conf.d/default.conf
sed -e 's!\(try_files $uri $uri/ \)\(/index.php\)!\1'${BASE_PATH}'\2!' -i /etc/nginx/conf.d/default.conf
exec "$@"
\ No newline at end of file
server {
listen 80;
server_name localhost;
location /themes/ {
alias /usr/local/vufind/themes/;
}
location /cache/ {
alias /var/cache/vufind/public/;
}
location / {
root /usr/local/vufind/public/;
try_files $uri $uri/ /index.php$is_args$args;
index index.php;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/vufind/public/index.php;
include fastcgi_params;
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment