From aee31cc4c272b28e4b32aa7859d58df4a5ffac04 Mon Sep 17 00:00:00 2001 From: Jonas Kattendick Date: Thu, 2 Feb 2023 18:33:08 +0100 Subject: [PATCH] feat(1.0-rc10): add new latest version --- .gitignore | 1 + 1.0-rc10/mysqli/Dockerfile | 27 ++++++++++ 1.0-rc10/pgsql/Dockerfile | 27 ++++++++++ README.md | 100 ++++++++++++++++++++++++++++++++++++- TODO.md | 4 ++ build-all.sh | 7 +++ docker-compose.yml | 47 +++++++++++++++++ flyspray.ini | 4 ++ sample.env | 2 + 9 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 1.0-rc10/mysqli/Dockerfile create mode 100644 1.0-rc10/pgsql/Dockerfile create mode 100644 TODO.md create mode 100755 build-all.sh create mode 100644 docker-compose.yml create mode 100644 flyspray.ini create mode 100644 sample.env diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/1.0-rc10/mysqli/Dockerfile b/1.0-rc10/mysqli/Dockerfile new file mode 100644 index 0000000..100f362 --- /dev/null +++ b/1.0-rc10/mysqli/Dockerfile @@ -0,0 +1,27 @@ +FROM php:8.0-apache + +ENV FLYSPRAY /var/www/flyspray +ENV FLYSPRAY_SRC https://github.com/flyspray/flyspray/releases/download/v1.0-rc10/flyspray-1.0-rc10.tgz + +WORKDIR $FLYSPRAY + +RUN apt-get update -y && \ + apt-get upgrade -y && \ + apt-get install -y graphviz libfreetype6-dev libjpeg-dev zlib1g-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \ + docker-php-ext-install -j$(nproc) exif gd mysqli + +ENV APACHE_DOCUMENT_ROOT $FLYSPRAY +RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf && \ + sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf + +RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" + +RUN curl -L "$FLYSPRAY_SRC" | tar zxf - --strip-components=1 +RUN chown www-data:www-data -R "$FLYSPRAY" + +VOLUME $FLYSPRAY/attachments, $FLYSPRAY/avatars +EXPOSE 80 443 diff --git a/1.0-rc10/pgsql/Dockerfile b/1.0-rc10/pgsql/Dockerfile new file mode 100644 index 0000000..c7f204a --- /dev/null +++ b/1.0-rc10/pgsql/Dockerfile @@ -0,0 +1,27 @@ +FROM php:8.0-apache + +ENV FLYSPRAY /var/www/flyspray +ENV FLYSPRAY_SRC https://github.com/flyspray/flyspray/releases/download/v1.0-rc10/flyspray-1.0-rc10.tgz + +WORKDIR $FLYSPRAY + +RUN apt-get update -y && \ + apt-get upgrade -y && \ + apt-get install -y graphviz libpq-dev libfreetype6-dev libjpeg-dev zlib1g-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \ + docker-php-ext-install -j$(nproc) exif gd pgsql + +ENV APACHE_DOCUMENT_ROOT $FLYSPRAY +RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf && \ + sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf + +RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" + +RUN curl -L "$FLYSPRAY_SRC" | tar zxf - --strip-components=1 +RUN chown www-data:www-data -R "$FLYSPRAY" + +VOLUME $FLYSPRAY/attachments, $FLYSPRAY/avatars +EXPOSE 80 443 diff --git a/README.md b/README.md index 82a329a..3dcc26e 100644 --- a/README.md +++ b/README.md @@ -1 +1,99 @@ -# Flyspray docker +# flyspray-docker + +This repository contains build files for [Flyspray] docker images. The images +extend the official `php:apache` image. If you would like to use another +webserver, you must create them yourself. + +Images are available for [PostgreSQL] (`*/pgsql`) and [MySQL]/[MariaDB] +(`*/mysqli`). + +# Prerequesits + +Install [Docker]. + +## Building the image + +```bash +docker build \ + --tag flyspray:1.0-rc10-mysqli \ + ./1.0-rc10/mysqli +``` + +If you would like to build all images, use the `build-all.sh` script. + +## Running the container + +Create and run the container with the following command (mounts are optional +and depend on your usecase): + +```bash +docker volume create flyspray_attachments +docker volume create flyspray_avatars +docker run --name flyspray \ + --volume flyspray_attachments:/var/www/flyspray/attachments:rw \ + --volume flyspray_avatars:/var/www/flyspray/avatars:rw \ + --volume /path/to/flyspray.conf.php:/var/www/flyspray/flyspray.conf.php:rw \ + --volume /path/to/flyspray.ini:/usr/local/etc/php/conf.d/flyspray.ini:ro \ + flyspray:1.0-rc10-mysqli +``` + +## Using docker compose + +1. Run `docker compose up -d` +2. Open in your Browser +3. Install flyspray. Use the database credentials you defined below and `"db"` + for the database hostname. +4. Optional: Mount the config file. + 1. While the container is running, copy the generated config: + ```bash + docker cp flyspray:/var/www/flyspray/flyspray.conf.php /path/to/flyspray.conf.php + ``` + 2. Add the `flyspray.conf.php` file to the `volumes` of `web` + 3. Recreate the container by running `docker compose up -d` + +```yaml +version: '3.8' + +services: + web: + container_name: flyspray + image: flyspray:1.0-rc10-mysqli + ports: + - 8081:80 + volumes: + # Keep attachments and avatars between containers + - flyspray_attachments:/var/www/flyspray/attachments:rw + - flyspray_avatars:/var/www/flyspray/avatars:rw + # Recommended: Mount a custom flyspray config file + # NOTE: Do not mount an empty file! + - ./flyspray.conf.php:/var/www/flyspray/flyspray.conf.php:rw + # Optional: Mount additional php options (max upload size, etc.) + - ./flyspray.ini:/usr/local/etc/php/conf.d/flyspray.ini:ro + db: + container_name: flyspray_db + image: mariadb:10.3.2 + environment: + MYSQL_DATABASE: flyspray + MYSQL_USER: flyspray + MYSQL_PASSWORD: ${DB_PASSWORD} + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + volumes: + - flyspray_dbdata:/var/lib/mysql + +volumes: + flyspray_attachements: {} + flyspray_avatars: {} + flyspray_dbdata: {} +``` + +## Adding a new version + +1. Copy the last version directory +2. Change the `FLYSPRAY_SRC` url +3. Make necessary changes + +[Flyspray]: +[Docker]: +[PostgreSQL]: +[MySQL]: +[MariaDB]: diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..09b3a25 --- /dev/null +++ b/TODO.md @@ -0,0 +1,4 @@ +- Is there a low effort way to automate the setup? +- Do we need the `graphviz` dependency? +- Build an image of master/1.0-rc11-dev +- Distribute the images diff --git a/build-all.sh b/build-all.sh new file mode 100755 index 0000000..d35093d --- /dev/null +++ b/build-all.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Usage: ./build-all.sh [image-name] + +name="${1:-flyspray}" + +docker build -t "$name:1.0-rc10-mysqli" -t "$name:1.0-rc10" -t "$name:latest" ./1.0-rc10/mysqli +docker build -t "$name:1.0-rc10-pgsql" ./1.0-rc10/pgsql diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fa4d43d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,47 @@ +version: '3.8' + +services: + web: + container_name: flyspray + image: flyspray:1.0-rc10 + build: 1.0-rc10/mysqli + environment: + FLYSPRAY_DATABASE_DBHOST: db + FLYSPRAY_DATABASE_DBNAME: flyspray + FLYSPRAY_DATABASE_DBUSER: flyspray + FLYSPRAY_DATABASE_DBPASS: ${DB_PASSWORD} + ports: + - 8081:80 + volumes: + # Keep attachments and avatars between containers + - flyspray_attachments:/var/www/flyspray/attachments:rw + - flyspray_avatars:/var/www/flyspray/avatars:rw + # Mount a custom flyspray config file + # NOTE: Do not mount an empty file! + # - ./flyspray.conf.php:/var/www/flyspray/flyspray.conf.php:rw + # Mount additional php options (max upload size, etc.) + - ./flyspray.ini:/usr/local/etc/php/conf.d/flyspray.ini:ro + + db: + container_name: flyspray_db + image: mariadb:10.3.2 + environment: + MYSQL_DATABASE: flyspray + MYSQL_USER: flyspray + MYSQL_PASSWORD: ${DB_PASSWORD} + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + ports: + - 33061:3306 + volumes: + - flyspray_dbdata:/var/lib/mysql + + # FIXME: Remove this from the example + phpmyadmin: + image: phpmyadmin/phpmyadmin + ports: + - 8082:80 + +volumes: + flyspray_attachments: {} + flyspray_avatars: {} + flyspray_dbdata: {} diff --git a/flyspray.ini b/flyspray.ini new file mode 100644 index 0000000..ad8b8df --- /dev/null +++ b/flyspray.ini @@ -0,0 +1,4 @@ +; Overwrite php ini options using this file +[PATH=/var/www/flyspray] +upload_max_filesize = 50M +post_max_size = 50M diff --git a/sample.env b/sample.env new file mode 100644 index 0000000..90ac955 --- /dev/null +++ b/sample.env @@ -0,0 +1,2 @@ +DB_PASSWORD=secret +DB_ROOT_PASSWORD=secret