This commit is contained in:
commit
bbfd70238c
21 changed files with 610 additions and 0 deletions
110
.drone.yml
Normal file
110
.drone.yml
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
################
|
||||||
|
# docker build #
|
||||||
|
################
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: docker-build-amd64
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
# anchors
|
||||||
|
cr_secrets: &cr_secrets
|
||||||
|
username:
|
||||||
|
from_secret: cr-dhub-username
|
||||||
|
password:
|
||||||
|
from_secret: cr-dhub-key
|
||||||
|
|
||||||
|
docker_build: &docker_build
|
||||||
|
image: plugins/docker
|
||||||
|
pull: if-not-exists
|
||||||
|
group: build
|
||||||
|
|
||||||
|
# build steps amd64
|
||||||
|
steps:
|
||||||
|
- name: 'build and publish docker image'
|
||||||
|
<<: *docker_build
|
||||||
|
settings:
|
||||||
|
repo: olofvndrhr/flox-dockerized
|
||||||
|
dockerfile: Dockerfile.amd64
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: linux-amd64
|
||||||
|
<<: *cr_secrets
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: docker-build-arm64
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: arm64
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
# anchors
|
||||||
|
cr_secrets: &cr_secrets
|
||||||
|
username:
|
||||||
|
from_secret: cr-dhub-username
|
||||||
|
password:
|
||||||
|
from_secret: cr-dhub-key
|
||||||
|
|
||||||
|
docker_build: &docker_build
|
||||||
|
image: plugins/docker
|
||||||
|
pull: if-not-exists
|
||||||
|
group: build
|
||||||
|
|
||||||
|
# build steps arm64
|
||||||
|
steps:
|
||||||
|
- name: 'build and publish docker image'
|
||||||
|
<<: *docker_build
|
||||||
|
settings:
|
||||||
|
repo: olofvndrhr/flox-dockerized
|
||||||
|
dockerfile: Dockerfile.arm64
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: linux-arm64
|
||||||
|
<<: *cr_secrets
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: docker-publish-manifest
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
# anchors
|
||||||
|
cr_secrets: &cr_secrets
|
||||||
|
username:
|
||||||
|
from_secret: cr-dhub-username
|
||||||
|
password:
|
||||||
|
from_secret: cr-dhub-key
|
||||||
|
|
||||||
|
# build steps
|
||||||
|
steps:
|
||||||
|
- name: 'publish manifest'
|
||||||
|
image: plugins/manifest
|
||||||
|
settings:
|
||||||
|
spec: manifest.tmpl
|
||||||
|
auto_tag: true
|
||||||
|
ignore_missing: true
|
||||||
|
<<: *cr_secrets
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- docker-build-amd64
|
||||||
|
- docker-build-arm64
|
||||||
|
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
data/
|
15
CHANGELOG.md
Normal file
15
CHANGELOG.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
|
||||||
|
## [1.0.0] - 2022-04-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Initial release
|
||||||
|
- Published docker image: https://hub.docker.com/r/olofvndrhr/flox-dockerized
|
||||||
|
|
||||||
|
|
73
Dockerfile.amd64
Normal file
73
Dockerfile.amd64
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
FROM composer:1.10.17 AS composer
|
||||||
|
|
||||||
|
# build flox
|
||||||
|
RUN \
|
||||||
|
echo "**** building flox ****" && \
|
||||||
|
apk add git && \
|
||||||
|
git clone --branch master https://github.com/devfake/flox.git /build/flox && \
|
||||||
|
cd /build/flox/backend && \
|
||||||
|
composer install
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
FROM cr.44net.ch/baseimages/debian-s6:1.3.1
|
||||||
|
|
||||||
|
# set version label
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG VERSION
|
||||||
|
LABEL build_version="Version:- ${VERSION} Build-date:- ${BUILD_DATE}"
|
||||||
|
LABEL maintainer="Ivan Schaller"
|
||||||
|
|
||||||
|
ARG db_path='/flox/backend/database/db.sqlite'
|
||||||
|
|
||||||
|
COPY --from=composer /build/flox /app/flox
|
||||||
|
|
||||||
|
# install packages
|
||||||
|
RUN \
|
||||||
|
echo "**** installing base packages ****" && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
sqlite3 \
|
||||||
|
php7.4 \
|
||||||
|
php7.4-sqlite3 \
|
||||||
|
php-fpm \
|
||||||
|
php-xml \
|
||||||
|
php-mbstring \
|
||||||
|
php-bcmath \
|
||||||
|
php-opcache \
|
||||||
|
nginx \
|
||||||
|
&& \
|
||||||
|
echo "**** prepare app ****" && \
|
||||||
|
touch "/app${db_path}" && \
|
||||||
|
cd /app/flox/backend && \
|
||||||
|
php artisan flox:init --no-interaction "${db_path}" && \
|
||||||
|
sed -i \
|
||||||
|
-e 's,DB_CONNECTION=.*,DB_CONNECTION=sqlite,g' \
|
||||||
|
-e 's,DB_DATABASE=.*,DB_DATABASE='"${db_path}"',g' \
|
||||||
|
/app/flox/backend/.env && \
|
||||||
|
echo "**** other preparation ****" && \
|
||||||
|
mkdir -p mkdir -p /run/php/ && \
|
||||||
|
touch /run/php/php7.4-fpm.sock && \
|
||||||
|
sed -i \
|
||||||
|
-e 's,user =.*,user = abc,g' \
|
||||||
|
-e 's,group =.*,group = abc,g' \
|
||||||
|
-e 's,listen.owner =.*,listen.owner = abc,g' \
|
||||||
|
-e 's,listen.group =.*,listen.group = abc,g' \
|
||||||
|
/etc/php/7.4/fpm/pool.d/www.conf && \
|
||||||
|
chown -R abc:abc /app/flox && \
|
||||||
|
echo "**** cleanup ****" && \
|
||||||
|
apt-get purge --auto-remove -y && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf \
|
||||||
|
/tmp/* \
|
||||||
|
/var/lib/apt/lists/* \
|
||||||
|
/var/tmp/*
|
||||||
|
|
||||||
|
|
||||||
|
# copy files to container
|
||||||
|
COPY rootfs /
|
||||||
|
|
||||||
|
WORKDIR /flox
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
73
Dockerfile.arm64
Normal file
73
Dockerfile.arm64
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
FROM composer:1.10.17 AS composer
|
||||||
|
|
||||||
|
# build flox
|
||||||
|
RUN \
|
||||||
|
echo "**** building flox ****" && \
|
||||||
|
apk add git && \
|
||||||
|
git clone --branch master https://github.com/devfake/flox.git /build/flox && \
|
||||||
|
cd /build/flox/backend && \
|
||||||
|
composer install
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
FROM cr.44net.ch/baseimages/debian-s6:1.3.1
|
||||||
|
|
||||||
|
# set version label
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG VERSION
|
||||||
|
LABEL build_version="Version:- ${VERSION} Build-date:- ${BUILD_DATE}"
|
||||||
|
LABEL maintainer="Ivan Schaller"
|
||||||
|
|
||||||
|
ARG db_path='/flox/backend/database/db.sqlite'
|
||||||
|
|
||||||
|
COPY --from=composer /build/flox /app/flox
|
||||||
|
|
||||||
|
# install packages
|
||||||
|
RUN \
|
||||||
|
echo "**** installing base packages ****" && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
sqlite3 \
|
||||||
|
php7.4 \
|
||||||
|
php7.4-sqlite3 \
|
||||||
|
php-fpm \
|
||||||
|
php-xml \
|
||||||
|
php-mbstring \
|
||||||
|
php-bcmath \
|
||||||
|
php-opcache \
|
||||||
|
nginx \
|
||||||
|
&& \
|
||||||
|
echo "**** prepare app ****" && \
|
||||||
|
touch "/app${db_path}" && \
|
||||||
|
cd /app/flox/backend && \
|
||||||
|
php artisan flox:init --no-interaction "${db_path}" && \
|
||||||
|
sed -i \
|
||||||
|
-e 's,DB_CONNECTION=.*,DB_CONNECTION=sqlite,g' \
|
||||||
|
-e 's,DB_DATABASE=.*,DB_DATABASE='"${db_path}"',g' \
|
||||||
|
/app/flox/backend/.env && \
|
||||||
|
echo "**** other preparation ****" && \
|
||||||
|
mkdir -p mkdir -p /run/php/ && \
|
||||||
|
touch /run/php/php7.4-fpm.sock && \
|
||||||
|
sed -i \
|
||||||
|
-e 's,user =.*,user = abc,g' \
|
||||||
|
-e 's,group =.*,group = abc,g' \
|
||||||
|
-e 's,listen.owner =.*,listen.owner = abc,g' \
|
||||||
|
-e 's,listen.group =.*,listen.group = abc,g' \
|
||||||
|
/etc/php/7.4/fpm/pool.d/www.conf && \
|
||||||
|
chown -R abc:abc /app/flox && \
|
||||||
|
echo "**** cleanup ****" && \
|
||||||
|
apt-get purge --auto-remove -y && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf \
|
||||||
|
/tmp/* \
|
||||||
|
/var/lib/apt/lists/* \
|
||||||
|
/var/tmp/*
|
||||||
|
|
||||||
|
|
||||||
|
# copy files to container
|
||||||
|
COPY rootfs /
|
||||||
|
|
||||||
|
WORKDIR /flox
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
19
LICENSE.md
Normal file
19
LICENSE.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 devfake
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
91
README.md
Normal file
91
README.md
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
# flox-dockerized
|
||||||
|
|
||||||
|
[![Build Status](https://drone.44net.ch/api/badges/olofvndrhr/flox-dockerized/status.svg)](https://drone.44net.ch/olofvndrhr/flox-dockerized)
|
||||||
|
|
||||||
|
### This is a docker container for the flox watchlist. Be sure to check out the original project: https://github.com/devfake/flox
|
||||||
|
|
||||||
|
>Flox is a self hosted Movie, Series and Animes watch list. It's build on top of Laravel and Vue.js and uses [The Movie Database](https://www.themoviedb.org/) API.
|
||||||
|
The rating based on an 3-Point system for `good`, `medium` and `bad`.
|
||||||
|
|
||||||
|
>### [Try live demo](https://flox-demo.pyxl.dev) and [login](https://flox-demo.pyxl.dev/login) with `demo / demo` to add new stuff or change ratings.
|
||||||
|
|
||||||
|
<img src="https://raw.githubusercontent.com/devfake/flox/master/public/assets/screenshot.jpg" alt="drawing" width="800"/>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Running the container
|
||||||
|
|
||||||
|
> This image is available for arm64 and amd64. The right version for you system will automatically be pulled.
|
||||||
|
|
||||||
|
This container only exposes port 80/tcp. It is advised to run this configuration through a reverse proxy providing SSL if the service will be exposed over the internet. Data
|
||||||
|
is saved in the container at `/flox`.
|
||||||
|
|
||||||
|
To use the container you will need to set the env variable `tmdb_api_key` with your own [TheMovieDatabase API key](https://developers.themoviedb.org/3/getting-started/introduction). It is also recommended that you set `flox_admin_pass`. On first startup you also need to set `flox_db_init` to `true`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### An minimal configuration example would be:
|
||||||
|
```bash
|
||||||
|
# with docker run
|
||||||
|
cd <project_root>
|
||||||
|
docker run -p '80:80' --volume '/<data-directory>/:/flox/' -e tmdb_api_key=<key> -e flox_db_init=true --name flox olofvndrhr:flox-dockerized:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# with docker-compose (be sure to check all environment variables and change when neccesary)
|
||||||
|
cd <project_root>
|
||||||
|
nano docker-compose.yml # set tmdb_api_key & flox_db_init
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
In order to create an admin user you will need to run an initial migration. This can be done by running the container once with the environment variable `flox_db_init=true`.
|
||||||
|
If the env variables `flox_username` and `flox_password` are not set, the default login is: `admin:admin`.
|
||||||
|
|
||||||
|
You can then connect to [http://localhost](http://localhost) to access the application.
|
||||||
|
If you mounted the data directory, all changes will be saved through container recreation.
|
||||||
|
|
||||||
|
In the data directory is a file called `.lock`. This file controls whether or not to "reset" all application data. So don't remove the file unless you want to reset you installation.
|
||||||
|
The removed data will still be available in the running container in the directory `/tmp/flox` until you remove the container. After a reset you need to start the container with `flox_db_init=true` again.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Supportet environment variables
|
||||||
|
|
||||||
|
| Name | Description |
|
||||||
|
|--|--|
|
||||||
|
| tmdb_api_key | **(required)** The TMDB API key to use - required for startup *(https://developers.themoviedb.org/3/getting-started/introduction)* |
|
||||||
|
| flox_db_init | **(required)** Run db initialization at container startup *(default: false)* |
|
||||||
|
| flox_app_url | The url you will be hosting the app on *(default: http://localhost)* |
|
||||||
|
| flox_username | Inital username. Will not be overwritten after the initialization |
|
||||||
|
| flox_password | Initial password. Will not be overwritten after the initialization|
|
||||||
|
| flox_client_uri | The relative path you are hosting on *(default: /)* |
|
||||||
|
| flox_timezone | The timezone flox is running in *(default: UTC)* |
|
||||||
|
| flox_daily_reminder_time | The daily reminder time *(default: 10:00)* |
|
||||||
|
| flox_weekly_reminder_time | The weekly reminder time *(default: 20:00)* |
|
||||||
|
| puid | Unix user id to run the container as (default 4444) |
|
||||||
|
| pgid | Unix group id to run the container as (default 4444) |
|
||||||
|
| flox_mail_driver | Mail driver (most likely smtp) |
|
||||||
|
| flox_mail_host | Hostname of the mail server |
|
||||||
|
| flox_mail_port | Port of the mail server (smtp port) |
|
||||||
|
| flox_mail_from | Email address from which flox sends the mails |
|
||||||
|
| flox_mail_username | User name on the mail server |
|
||||||
|
| flox_mail_password | User password |
|
||||||
|
| flox_mail_encryption | Encryption type (tls,ssl,none) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
|
||||||
|
Like this project? Want to contribute? Awesome! Feel free to open some pull requests or just open an issue.
|
||||||
|
|
||||||
|
|
||||||
|
## Changelogs
|
||||||
|
|
||||||
|
Changelogs can be found [here](https://github.com/olofvndrhr/flox-dockerized/blob/master/CHANGELOG.md). But they may be not fully detailled.
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Flox is published under the MIT license. See LICENSE for more information. All credits to [devfake](https://github.com/devfake/flox/releases)
|
||||||
|
|
||||||
|
|
27
docker-compose.yml
Normal file
27
docker-compose.yml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
|
||||||
|
flox:
|
||||||
|
image: olofvndrhr/flox-dockerized:latest
|
||||||
|
container_name: flox-watchlist
|
||||||
|
restart: unless-stopped
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
networks:
|
||||||
|
- appnet
|
||||||
|
volumes:
|
||||||
|
- ./data/:/flox/
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Zurich
|
||||||
|
- PUID=4444 # custom userid
|
||||||
|
- PGID=4444 # custom groupid
|
||||||
|
- tmdb_api_key= # (required) The TMDB API key to use
|
||||||
|
- flox_init=true # run db initialization at container startup
|
||||||
|
|
||||||
|
networks:
|
||||||
|
appnet:
|
||||||
|
name: appnet
|
||||||
|
driver: bridge
|
||||||
|
|
20
manifest.tmpl
Normal file
20
manifest.tmpl
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
image: olofvndrhr/flox-dockerized:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}dev{{/if}}
|
||||||
|
{{#if build.tags}}
|
||||||
|
tags:
|
||||||
|
{{#each build.tags}}
|
||||||
|
- {{this}}
|
||||||
|
{{/each}}
|
||||||
|
- "latest"
|
||||||
|
{{/if}}
|
||||||
|
manifests:
|
||||||
|
-
|
||||||
|
image: olofvndrhr/flox-dockerized:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{else}}dev-{{/if}}linux-amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
||||||
|
-
|
||||||
|
image: olofvndrhr/flox-dockerized:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{else}}dev-{{/if}}linux-arm64
|
||||||
|
platform:
|
||||||
|
architecture: arm64
|
||||||
|
os: linux
|
||||||
|
variant: v8
|
22
rootfs/etc/cont-init.d/20-setenv
Normal file
22
rootfs/etc/cont-init.d/20-setenv
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# set all env variables for further use. if variable is unset, it will have the defaults on the right side after ":="
|
||||||
|
|
||||||
|
# custom env vars
|
||||||
|
: "${tmdb_api_key:=}"
|
||||||
|
: "${flox_app_url:=http://localhost}"
|
||||||
|
: "${flox_client_uri:=/}"
|
||||||
|
: "${flox_init:=false}"
|
||||||
|
: "${flox_username:=admin}"
|
||||||
|
: "${flox_password:=admin}"
|
||||||
|
: "${flox_timezone:=UTC}"
|
||||||
|
: "${flox_daily_reminder_time:=10:00}"
|
||||||
|
: "${flox_weekly_reminder_time:=20:00}"
|
||||||
|
: "${flox_mail_driver:=}"
|
||||||
|
: "${flox_mail_host:=}"
|
||||||
|
: "${flox_mail_port:=}"
|
||||||
|
: "${flox_mail_from:=}"
|
||||||
|
: "${flox_mail_username:=}"
|
||||||
|
: "${flox_mail_password:=}"
|
||||||
|
: "${flox_mail_encryption:=}"
|
20
rootfs/etc/cont-init.d/50-init
Normal file
20
rootfs/etc/cont-init.d/50-init
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
|
||||||
|
# check if lock file is present
|
||||||
|
if [[ ! -f /flox/.lock ]]; then
|
||||||
|
printf 'Copying files to bind mount path\n'
|
||||||
|
# move app to permanent path
|
||||||
|
rsync --archive --delete --backup --backup-dir=/tmp /app/flox/ /flox
|
||||||
|
|
||||||
|
# create lock file to prevent overwriting existing files
|
||||||
|
touch /flox/.lock
|
||||||
|
chmod 600 /flox/.lock
|
||||||
|
else
|
||||||
|
printf 'Lock file present. Not copying files\n'
|
||||||
|
fi
|
||||||
|
|
23
rootfs/etc/cont-init.d/51-prepare
Normal file
23
rootfs/etc/cont-init.d/51-prepare
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
# set db connection options
|
||||||
|
sed -i \
|
||||||
|
-e 's,^TMDB_API_KEY=.*,TMDB_API_KEY='"${tmdb_api_key}"',g' \
|
||||||
|
-e 's,^APP_URL=.*,APP_URL='"${flox_app_url}"',g' \
|
||||||
|
-e 's,^CLIENT_URI=.*,CLIENT_URI='"${flox_client_uri}"',g' \
|
||||||
|
-e 's,^TIMEZONE=.*,TIMEZONE='"${flox_timezone}"',g' \
|
||||||
|
-e 's,^DAILY_REMINDER_TIME=.*,DAILY_REMINDER_TIME='"${flox_daily_reminder_time}"',g' \
|
||||||
|
-e 's,^WEEKLY_REMINDER_TIME=.*,WEEKLY_REMINDER_TIME='"${flox_weekly_reminder_time}"',g' \
|
||||||
|
-e 's,^MAIL_DRIVER=.*,MAIL_DRIVER='"${flox_mail_driver}"',g' \
|
||||||
|
-e 's,^MAIL_HOST=.*,MAIL_HOST='"${flox_mail_host}"',g' \
|
||||||
|
-e 's,^MAIL_PORT=.*,MAIL_PORT='"${flox_mail_port}"',g' \
|
||||||
|
-e 's,^MAIL_FROM=.*,MAIL_FROM='"${flox_mail_from}"',g' \
|
||||||
|
-e 's,^MAIL_USERNAME=.*,MAIL_USERNAME='"${flox_mail_username}"',g' \
|
||||||
|
-e 's,^MAIL_PASSWORD=.*,MAIL_PASSWORD='"${flox_mail_password}"',g' \
|
||||||
|
-e 's,^MAIL_ENCRYPTION=.*,MAIL_ENCRYPTION='"${flox_mail_encryption}"',g' \
|
||||||
|
/flox/backend/.env
|
||||||
|
|
15
rootfs/etc/cont-init.d/52-migrate
Normal file
15
rootfs/etc/cont-init.d/52-migrate
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "${flox_init,,}" == "true" ]]; then
|
||||||
|
# init db
|
||||||
|
php /flox/backend/artisan flox:db --no-interaction "${flox_username}" "${flox_password}" #>/dev/null
|
||||||
|
else
|
||||||
|
# migrate db
|
||||||
|
php /flox/backend/artisan migrate #>/dev/null
|
||||||
|
fi
|
||||||
|
|
15
rootfs/etc/cont-init.d/80-fix-perms
Normal file
15
rootfs/etc/cont-init.d/80-fix-perms
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
app_path='/flox/'
|
||||||
|
|
||||||
|
# fix permissions
|
||||||
|
find "${app_path}" -type d -not -perm 775 -exec chmod 775 '{}' \+
|
||||||
|
find "${app_path}" -type f -not -perm 664 -exec chmod 664 '{}' \+
|
||||||
|
|
||||||
|
find "${app_path}" -not -user abc -exec chown abc '{}' \+
|
||||||
|
find "${app_path}" -not -group abc -exec chown :abc '{}' \+
|
||||||
|
|
1
rootfs/etc/cron.d/flox
Normal file
1
rootfs/etc/cron.d/flox
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* * * * * php /flox/backend/artisan schedule:run >> /dev/null 2>&1
|
36
rootfs/etc/nginx/nginx.conf
Normal file
36
rootfs/etc/nginx/nginx.conf
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
user abc;
|
||||||
|
daemon off;
|
||||||
|
worker_processes auto;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
include /etc/nginx/modules-enabled/*.conf;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
# multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
# server_tokens off;
|
||||||
|
|
||||||
|
# server_names_hash_bucket_size 64;
|
||||||
|
# server_name_in_redirect off;
|
||||||
|
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
|
||||||
|
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
include /etc/nginx/sites-enabled/*;
|
||||||
|
}
|
23
rootfs/etc/nginx/sites-enabled/default
Normal file
23
rootfs/etc/nginx/sites-enabled/default
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
root /flox/public/;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
client_max_body_size 64M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
try_files $uri =404;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
}
|
7
rootfs/etc/services.d/flox-worker/run
Normal file
7
rootfs/etc/services.d/flox-worker/run
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
exec php /flox/backend/artisan queue:work --tries=3
|
7
rootfs/etc/services.d/nginx/run
Normal file
7
rootfs/etc/services.d/nginx/run
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
exec nginx
|
7
rootfs/etc/services.d/php-fpm/run
Normal file
7
rootfs/etc/services.d/php-fpm/run
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
|
# source env variables
|
||||||
|
source /etc/cont-init.d/20-setenv
|
||||||
|
|
||||||
|
exec php-fpm7.4 --nodaemonize
|
5
rootfs/etc/usr/local/etc/php/conf.d/uploads.ini
Normal file
5
rootfs/etc/usr/local/etc/php/conf.d/uploads.ini
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
file_uploads = On
|
||||||
|
memory_limit = 64M
|
||||||
|
upload_max_filesize = 64M
|
||||||
|
post_max_size = 64M
|
||||||
|
max_execution_time = 600
|
Reference in a new issue