Move to PHP83 as PHP distribution, update documentation
All checks were successful
/ build (push) Successful in 1m15s
All checks were successful
/ build (push) Successful in 1m15s
This commit is contained in:
parent
3b1f79dce9
commit
04a5ba3a3d
6 changed files with 97 additions and 76 deletions
|
@ -1,5 +1,10 @@
|
|||
# CHANGELOG
|
||||
|
||||
## 2024-11-01
|
||||
|
||||
* Move to PHP83
|
||||
* Update documentation
|
||||
|
||||
## 2024-04-14
|
||||
|
||||
* Update to FileBin `4.0.2`
|
||||
|
|
58
Dockerfile
58
Dockerfile
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Build image
|
||||
#
|
||||
FROM alpine:3 as builder
|
||||
FROM alpine:3.20 as builder
|
||||
|
||||
ARG FB_VERSION
|
||||
ARG FB_SOURCE_URL="https://github.com/Bluewind/filebin"
|
||||
|
@ -22,7 +22,7 @@ RUN apk add --update --no-cache git && \
|
|||
git clone --branch ${FB_VERSION} "${FB_SOURCE_URL}" --depth=${FB_CLONE_DEPTH} /app/fb_src && \
|
||||
rm -rf /app/fb_src/.git
|
||||
|
||||
FROM alpine:3
|
||||
FROM alpine:3.20
|
||||
COPY --from=builder /app/fb_src /var/www
|
||||
|
||||
LABEL maintainer="Varakh <varakh@varakh.de>" \
|
||||
|
@ -92,27 +92,27 @@ RUN chmod -x /wait-for.sh && \
|
|||
ghostscript \
|
||||
msmtp \
|
||||
composer \
|
||||
php81 \
|
||||
php81-fpm \
|
||||
php81-intl \
|
||||
php81-curl \
|
||||
php81-dom \
|
||||
php81-pcntl \
|
||||
php81-posix \
|
||||
php81-session \
|
||||
php81-gd \
|
||||
php81-exif \
|
||||
php81-phar \
|
||||
php81-pdo \
|
||||
php81-pgsql \
|
||||
php81-pdo_pgsql \
|
||||
php81-pdo_mysql \
|
||||
php81-mysqli \
|
||||
php81-fileinfo \
|
||||
php81-mbstring \
|
||||
php81-ctype \
|
||||
php81-ldap \
|
||||
php81-pecl-memcached \
|
||||
php83 \
|
||||
php83-fpm \
|
||||
php83-intl \
|
||||
php83-curl \
|
||||
php83-dom \
|
||||
php83-pcntl \
|
||||
php83-posix \
|
||||
php83-session \
|
||||
php83-gd \
|
||||
php83-exif \
|
||||
php83-phar \
|
||||
php83-pdo \
|
||||
php83-pgsql \
|
||||
php83-pdo_pgsql \
|
||||
php83-pdo_mysql \
|
||||
php83-mysqli \
|
||||
php83-fileinfo \
|
||||
php83-mbstring \
|
||||
php83-ctype \
|
||||
php83-ldap \
|
||||
php83-pecl-memcached \
|
||||
memcached \
|
||||
ca-certificates && \
|
||||
rm -rf /var/cache/apk/* && \
|
||||
|
@ -120,16 +120,16 @@ RUN chmod -x /wait-for.sh && \
|
|||
# prepare www dir
|
||||
cp -r /var/www/application/config/example/* /var/www/application/config && \
|
||||
# set environments
|
||||
sed -i "s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i" /etc/php81/php.ini && \
|
||||
sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|i" /etc/php81/php.ini && \
|
||||
sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php81/php.ini && \
|
||||
sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php81/php.ini && \
|
||||
sed -i 's+.*sendmail_path =.*+sendmail_path = "/usr/bin/msmtp -C /var/www/msmtprc --logfile /var/www/msmtp.log -a filebinmail -t"+' /etc/php81/php.ini && \
|
||||
sed -i "s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i" /etc/php83/php.ini && \
|
||||
sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|i" /etc/php83/php.ini && \
|
||||
sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php83/php.ini && \
|
||||
sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php83/php.ini && \
|
||||
sed -i 's+.*sendmail_path =.*+sendmail_path = "/usr/bin/msmtp -C /var/www/msmtprc --logfile /var/www/msmtp.log -a filebinmail -t"+' /etc/php83/php.ini && \
|
||||
# clean up and permissions
|
||||
rm -rf /var/cache/apk/* && \
|
||||
chown nobody:nginx -R /var/www && \
|
||||
rm /usr/bin/php && \
|
||||
ln -s /usr/bin/php81 /usr/bin/php
|
||||
ln -s /usr/bin/php83 /usr/bin/php
|
||||
|
||||
# Add nginx config
|
||||
ADD src/filebin.nginx.conf /etc/nginx/nginx.conf
|
||||
|
|
64
README.md
64
README.md
|
@ -2,45 +2,85 @@
|
|||
|
||||
A docker image for [FileBin](https://git.server-speed.net/users/flo/filebin/) to have it up and running in seconds.
|
||||
|
||||
Visit project on [https://git.myservermanager.com/varakh/docker-filebin](https://git.myservermanager.com/varakh/docker-filebin)
|
||||
Visit project
|
||||
on [https://git.myservermanager.com/varakh/docker-filebin](https://git.myservermanager.com/varakh/docker-filebin)
|
||||
or [Docker Hub](https://hub.docker.com/r/varakh/filebin).
|
||||
|
||||
The main git repository is hosted at _[https://git.myservermanager.com/varakh/docker-filebin](https://git.myservermanager.com/varakh/docker-filebin)_.
|
||||
The main git repository is hosted at
|
||||
_[https://git.myservermanager.com/varakh/docker-filebin](https://git.myservermanager.com/varakh/docker-filebin)_.
|
||||
Other repositories are mirrors and pull requests, issues, and planning are managed there.
|
||||
|
||||
Contributions are very welcome!
|
||||
|
||||
## Getting started
|
||||
|
||||
The recommended way to get started is to use the example `docker-compose.yml` file and use *Docker*. Before, make
|
||||
There's an example [`docker-compose.yml`](./docker-compose.yml) file to get started quickly. Before, make
|
||||
yourself familiar with the environment variables which can be set. Defaults should do as a starting point.
|
||||
|
||||
_Be sure to read persisting volumes_ section and execute the required command.
|
||||
|
||||
Default database is PostgreSQL. Other databases are supported and can be configured via exposed environment variables.
|
||||
Default database is Postgres. Other databases are supported and can be configured via exposed environment variables.
|
||||
Please refer to the original documentation of the application for further details. PHP modules for MySQL are included in
|
||||
the image.
|
||||
|
||||
After your database and the application docker container is up and running, add a first user by executing a command
|
||||
within the docker container:
|
||||
|
||||
```
|
||||
docker exec -it filebin_app /bin/sh
|
||||
```shell
|
||||
# docker
|
||||
docker exec -it filebin_app sh
|
||||
|
||||
# podman
|
||||
podman exec -it filebin_app sh
|
||||
|
||||
# inside container
|
||||
php /var/www/index.php user add_user
|
||||
```
|
||||
|
||||
_Alternatively_ you can also use *Podman* for a root-less deployment, e.g. with something similar to:
|
||||
_Alternatively_ you can also use *Podman* for deployment, e.g. with something similar to:
|
||||
|
||||
```
|
||||
podman run -e POSTGRES_PASSWORD=fb -e POSTGRES_USER=fb -e POSTGRES_DB=fb -p 5432:5432 docker.io/postgres:11
|
||||
podman run -e BASE_URL=http://localhost:8080 -e DB_HOST=your_host -e DB_PORT=5432 -e DB_NAME=fb -e DB_USER=fb -e DB_PASS=fb -e ENCRYPTION_KEY=your_32_long_secret -p 8080:80 docker.io/varakh/filebin:latest
|
||||
```shell
|
||||
# create recommended volumes
|
||||
podman volume create fb-data-vol
|
||||
podman volume create fb-db-vol
|
||||
|
||||
# create pod, making it available on localhost only
|
||||
podman pod create -n filebin -p '127.0.0.1:8080:80'
|
||||
|
||||
# start database container
|
||||
podman run -d --name filebin_db \
|
||||
--pod filebin
|
||||
-v fb-db-vol:/var/lib/postgresql/data \
|
||||
-e POSTGRES_PASSWORD=fb \
|
||||
-e POSTGRES_USER=fb \
|
||||
-e POSTGRES_DB=fb \
|
||||
docker.io/postgres:15
|
||||
|
||||
# start application container
|
||||
# - generate ENCRYPTION_KEY key via 'openssl rand -hex 16'
|
||||
# - adapt 'BASE_URL' to your public domain
|
||||
podman run -d --name filebin_app \
|
||||
--pod filebin \
|
||||
-v fb-data-vol:/var/www/data/uploads \
|
||||
-e ENCRYPTION_KEY=<your_32_long_secret> \
|
||||
-e BASE_URL=http://localhost:8080 \
|
||||
-e DB_HOST=localhost \
|
||||
-e DB_PORT=5432 \
|
||||
-e DB_NAME=fb \
|
||||
-e DB_USER=fb \
|
||||
-e DB_PASS=fb \
|
||||
docker.io/varakh/filebin:latest
|
||||
```
|
||||
|
||||
### Persisting volumes
|
||||
|
||||
You'll probably want the `uploads/` folder to be persistent across container restarts.
|
||||
> Postgres data should also be persisted. Please look into the above examples or consult Postgres docker image
|
||||
> documentation.
|
||||
|
||||
Here's an example on how to persist the `data/uploads/` folder of the application.
|
||||
You'll probably want FileBin's `uploads/` folder to be persistent across container restarts.
|
||||
|
||||
Here's an example on how to persist the `data/uploads/` folder of the application with a host bind. You can also use
|
||||
actual volumes for that.
|
||||
|
||||
* Create folder: `mkdir -p ./filebin_data`
|
||||
* Afterward, adjust permissions so that the folder can be used within the docker
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
version: "3"
|
||||
|
||||
networks:
|
||||
fb:
|
||||
external: false
|
||||
|
@ -13,7 +11,8 @@ services:
|
|||
- POSTGRES_USER=fb
|
||||
- POSTGRES_DB=fb
|
||||
volumes:
|
||||
- ./filebin_db/:/var/lib/postgresql/data # persist postgres data on the host
|
||||
# persist postgres data on host in current directory, you can also switch to actual volumes
|
||||
- ./filebin_db/:/var/lib/postgresql/data
|
||||
restart: always
|
||||
networks:
|
||||
- fb
|
||||
|
@ -24,17 +23,21 @@ services:
|
|||
depends_on:
|
||||
- db
|
||||
ports:
|
||||
- "127.0.0.1:8080:80" # exposed port :80 mapped to :8080 on only this host. 8080 should then be used in proxy
|
||||
# exposed port :80 mapped to :8080 on only this host. 8080 should then be used in proxy
|
||||
- "127.0.0.1:8080:80"
|
||||
environment:
|
||||
- BASE_URL=https://fb.domain.tld/ # with trailing slash
|
||||
# with trailing slash
|
||||
- BASE_URL=https://fb.domain.tld/
|
||||
- DB_HOST=db
|
||||
- DB_PORT=5432
|
||||
- DB_NAME=fb
|
||||
- DB_USER=fb
|
||||
- DB_PASS=fb
|
||||
- ENCRYPTION_KEY= # REQUIRED: set a 32 character long sequence
|
||||
# REQUIRED: set a 32 character long sequence, e.g. with 'openssl rand -hex 16'
|
||||
- ENCRYPTION_KEY=
|
||||
volumes:
|
||||
- "./filebin_data:/var/www/data/uploads" # persist filebin data on the host
|
||||
# persist filebin data on host in current directory, you can also switch to actual volumes
|
||||
- "./filebin_data:/var/www/data/uploads"
|
||||
stdin_open: true
|
||||
tty: true
|
||||
restart: always
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e;
|
||||
|
||||
if [[ -v FB_VERSION ]]; then
|
||||
echo "Processing with version ${FB_VERSION}"
|
||||
else
|
||||
echo "Set FB_VERSION before calling this script"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
BUILD_DIR="fb_src"
|
||||
|
||||
if [[ ! -d "${BUILD_DIR}" ]]; then
|
||||
mkdir -p "${BUILD_DIR}";
|
||||
echo "Created ${BUILD_DIR}"
|
||||
else
|
||||
rm -rf "${BUILD_DIR}";
|
||||
mkdir -p "${BUILD_DIR}";
|
||||
echo "Re-created ${BUILD_DIR}"
|
||||
fi
|
||||
|
||||
git clone --branch ${FB_VERSION} https://github.com/Bluewind/filebin --depth=1 "${BUILD_DIR}";
|
||||
sudo docker build --no-cache -t varakh/filebin:${FB_VERSION} -t varakh/filebin:latest .;
|
||||
|
||||
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
exec /usr/sbin/php-fpm81 --nodaemonize
|
||||
exec /usr/sbin/php-fpm83 --nodaemonize
|
||||
|
|
Loading…
Reference in a new issue