docker-phpbb/README.MD

213 lines
5.8 KiB
Markdown

# phpBB3 docker image
This is updated fork of [selim13's docker-phpbb image](https://github.com/selim13/docker-phpbb).
Now it even bundles caddy instead of apache2. Thanks
[ParaParty/docker-php-caddy](https://github.com/ParaParty/docker-php-caddy) for the inspiration.
Lightweight, Alpine based [phpBB](https://www.phpbb.com/) docker image.
You can find an example of forum running using this image at [ks.fhs.sh](https://ks.fhs.sh).
# Supported tags and respective `Dockerfile` links
- [`3.3`, `3.3.11`, `latest`](https://github.com/fat0troll/docker-phpbb/blob/master/Dockerfile) bundled with PHP 8
# How to use this image
## Initial installation
If you don't have a prepared phpBB database, you can use a standard phpBB
installer script, just run a temporary container with `PHPBB_INSTALL=true`
environment variable:
```console
$ docker run -p 8000:8181 --name phpbb-install -e PHPBB_INSTALL=true -d fat0troll/phpbb:3.3
```
Point your browser to the http://localhost:8000 to begin the
installation process.
This image is bundled with SQLite3, MySQL and PostgresSQL database engines
support. Others can be added by creating custom Dockerfile. For MySQL and PostgresSQL
you can use standard container linking or use SQLite if you want a self
sufficient container.
For SQLite3 set `Database server hostname or DSN` field to `/phpbb/sqlite/sqlite.db`.
This file will be created on a docker volume and outside of the webserver's document root
for security. Leave user name, password and database name fields blank.
After the installation process is complete you can safely stop this container:
```console
$ docker stop phpbb-install
```
## Starting
You can start a container as follows:
```console
$ docker run --name phpbb -d fat0troll/phpbb:3.3
```
By default, it uses SQLite3 as a database backend, so you will need to supply
it with a database file. It's default path is `/phpbb/sqlite/sqlite.db`.
You can import it from the temporary installation container above:
```console
$ docker run --volumes-from phpbb-install --name phpbb -d fat0troll/phpbb:3.3
```
Or just copy it inside container if you have one from previous phpBB
installations:
```console
$ docker cp /path/at/host/sqlite.db phpbb:/www/sqlite/sqlite.db
```
For other database engines you will need to pass credentials and driver type
using environment variables:
```console
$ docker run --name phpbb \
-e PHPBB_DB_DRIVER=mysqli \
-e PHPBB_DB_HOST=dbmysql \
-e PHPBB_DB_PORT=3306 \
-e PHPBB_DB_NAME=phpbb \
-e PHPBB_DB_USER=phpbb \
-e PHPBB_DB_PASSWD=pass -d selim13/phpbb:3.3
```
## Environment variables
This image utilises environment variables for basic configuration. Most of
them are passed directly to phpBB's `config.php` or to the startup script.
### PHPBB_INSTALL
If set to `true`, container will start with an empty `config.php` file and
phpBB `/install/` directory intact. This will allow you to initilalize
a forum database upon fresh installation.
### PHPBB_DB_DRIVER
Selects a database driver. phpBB3 ships with following drivers:
- `mssql` - MS SQL Server
- `mysql` - MySQL via outdated php extension
- `mysqli` - MySQL via newer php extension
- `oracle` - Oracle
- `postgres` - PostgreSQL
- `sqlite` - SQLite 2
- `sqlite3` - SQLite 3
This image is bundled with support of `sqlite3`, `mysqli` and `postgres` drivers.
Default value: sqlite3
### PHPBB_DB_HOST
Database hostname or ip address.
For the SQLite3 driver sets database file path.
Default value: /phpbb/sqlite/sqlite.db
### PHPBB_DB_PORT
Database port.
### PHPBB_DB_NAME
Supplies database name for phpBB3.
### PHPBB_DB_USER
Supplies a user name for phpBB3 database.
### PHPBB_DB_PASSWD
Supplies a user password for phpBB3 database.
If you feel paranoid about providing your database password in an environment
variable, you can always ship it with a custom `config.php` file using volumes
or by extending this image.
### PHPBB_DB_TABLE_PREFIX
Table prefix for phpBB3 database.
Default value: phpbb\_
### PHPBB_DB_AUTOMIGRATE
If set to `true`, instructs a container to run database migrations by
executing `bin/phpbbcli.php db:migrate` on every startup.
If migrations fail, container will refuse to start.
### PHPBB_DB_WAIT
If set to `true`, container will wait for database service to become available.
You will need to explicitly set `PHPBB_DB_HOST` and `PHPBB_DB_PORT` for this
to work.
Use in conjunction with `PHPBB_DB_AUTOMIGRATE` to prevent running migrations
before database is ready.
Won't work for SQLite database engine as it is always available.
### PHPBB_DISPLAY_LOAD_TIME
If set to `true`, phpBB will display page loading time, queries count and peak memory
usage at the bottom of the page.
### PHPBB_DEBUG
If set to `true`, enables phpBB debug mode.
### PHPBB_DEBUG_CONTAINER
## Volumes
By default there are four volumes created for each container:
- /phpbb/sqlite
- /phpbb/www/files
- /phpbb/www/store
- /phpbb/www/images/avatars/upload
# Additional configuration
This image is based on a stock official Alpine image with apache2 and php5
packages from the Alpine Linux repository, so you can drop their custom
configuration files to `/etc/apache2/conf.d` and `/etc/php5/conf.d`.
## Pass user's IP from proxy
If you are planning to start a container behind proxy
(like [nginx-proxy](https://github.com/jwilder/nginx-proxy)), it will probably
be a good idea to get user's real IP instead of proxy one. For this, you can use
Apache RemoteIP module. Create a configuration file:
```apache
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy nginx-proxy
```
Here `X-Real-IP` is a header name, where proxy passed user's real IP and
`nginx-proxy` is proxy host name.
Then push it to `/etc/apache2/conf.d/` directory, for example, by extending this
image:
```dockerfile
FROM selim13/phpbb:3.3
COPY remoteip.conf /etc/apache2/conf.d
```