Initial commit
This commit is contained in:
commit
a27c44c92c
41
Dockerfile
Normal file
41
Dockerfile
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
FROM php:cli AS build
|
||||||
|
|
||||||
|
WORKDIR /flarum/app
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y git zip unzip p7zip
|
||||||
|
RUN cd /tmp \
|
||||||
|
&& curl --progress-bar http://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
|
||||||
|
&& chmod +x /usr/local/bin/composer
|
||||||
|
RUN composer create-project flarum/flarum /flarum/app
|
||||||
|
|
||||||
|
|
||||||
|
FROM php:apache
|
||||||
|
|
||||||
|
WORKDIR /flarum/app
|
||||||
|
|
||||||
|
ENV APACHE_DOCUMENT_ROOT /flarum/app/public
|
||||||
|
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
|
||||||
|
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
|
||||||
|
RUN sed -ri -e 's!AllowOverride [Nn]one!AllowOverride All!' /etc/apache2/sites-available/*.conf
|
||||||
|
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
||||||
|
RUN a2enmod rewrite
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y gettext libfreetype-dev libjpeg62-turbo-dev libpng-dev libpq5 libpq-dev mariadb-client libyaml-0-2 libyaml-dev \
|
||||||
|
&& pecl install yaml \
|
||||||
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||||
|
&& docker-php-ext-configure pgsql --with-pgsql=/usr/local/pgsql \
|
||||||
|
&& docker-php-ext-install -j$(nproc) gd pdo pdo_mysql pdo_pgsql pgsql \
|
||||||
|
&& docker-php-ext-enable gd pdo pdo_mysql pdo_pgsql pgsql yaml \
|
||||||
|
&& apt-get autoremove --purge -y libpq-dev libyaml-dev \
|
||||||
|
&& apt-get clean
|
||||||
|
|
||||||
|
COPY docker/make_config.php /flarum/make_config.php
|
||||||
|
COPY docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||||
|
COPY --from=build /flarum/app /flarum/app
|
||||||
|
RUN chown -R www-data:www-data /flarum
|
||||||
|
RUN chmod a+x /usr/local/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
VOLUME /flarum/app/extensions /flarum/app/public/assets /flarum/app/storage/logs
|
||||||
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
CMD ["apache2-foreground"]
|
30
docker-compose.yml
Normal file
30
docker-compose.yml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
flarum:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: flarum
|
||||||
|
MYSQL_USER: flarum
|
||||||
|
MYSQL_PASSWORD: flarum
|
||||||
|
MYSQL_HOST: mysql
|
||||||
|
SITE_URL: http://192.168.88.51:8000
|
||||||
|
ADMIN_USER: raoul
|
||||||
|
ADMIN_PASSWORD: omigosh
|
||||||
|
ADMIN_EMAIL: raoul@snyman.info
|
||||||
|
MAIL_DRIVER: smtp
|
||||||
|
MAIL_HOST: mail.snyman.info
|
||||||
|
MAIL_PORT: 465
|
||||||
|
MAIL_ENCRYPTION: ssl
|
||||||
|
MAIL_USERNAME: raoul@snyman.info
|
||||||
|
MAIL_PASSWORD: secret
|
||||||
|
ports:
|
||||||
|
- "8000:80"
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
mysql:
|
||||||
|
image: mysql
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: password
|
||||||
|
MYSQL_DATABASE: flarum
|
||||||
|
MYSQL_USER: flarum
|
||||||
|
MYSQL_PASSWORD: flarum
|
58
docker/docker-entrypoint.sh
Executable file
58
docker/docker-entrypoint.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Wait for MySQL/MariaDB
|
||||||
|
MAX_RETRY=45
|
||||||
|
RETRY=1
|
||||||
|
while ! mysql --protocol TCP -h"$MYSQL_HOST" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "show databases;" > /dev/null 2>&1; do
|
||||||
|
sleep 1
|
||||||
|
RETRY=`expr $RETRY + 1`
|
||||||
|
if [ $RETRY -gt $MAX_RETRY ]; then
|
||||||
|
>&2 echo "We have been waiting for MySQL too long already; failing."
|
||||||
|
exit 1
|
||||||
|
fi;
|
||||||
|
done
|
||||||
|
|
||||||
|
# Set up Flarum
|
||||||
|
if [[ -e '/flarum/app/public/assets/.installed.lock' ]]; then
|
||||||
|
# If Flarum has already been installed, just create a config file
|
||||||
|
echo "Creating config file..."
|
||||||
|
cat << EOF > /flarum/app/config.php
|
||||||
|
<?php return array (
|
||||||
|
'debug' => ${DEBUG:-false},
|
||||||
|
'offline' => false,
|
||||||
|
'database' => array (
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'host' => '${MYSQL_HOST:-mysql}',
|
||||||
|
'port' => '${MYSQL_PORT:-3306}',
|
||||||
|
'database' => '${MYSQL_DATABASE:-flarum}',
|
||||||
|
'username' => '${MYSQL_USER:-flarum}',
|
||||||
|
'password' => '${MYSQL_PASSWORD:-flarum}',
|
||||||
|
'charset' => 'utf8mb4',
|
||||||
|
'collation' => 'utf8mb4_unicode_ci',
|
||||||
|
'prefix' => '',
|
||||||
|
'strict' => false,
|
||||||
|
),
|
||||||
|
'url' => '${SITE_URL:-http://localhost}',
|
||||||
|
'paths' => array (
|
||||||
|
'api' => 'api',
|
||||||
|
'admin' => 'admin',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
# Else build the config template and run the command line installer
|
||||||
|
cd /flarum
|
||||||
|
php make_config.php
|
||||||
|
cd /flarum/app
|
||||||
|
php flarum install -f /flarum/config.yaml
|
||||||
|
rm -f /flarum/config.yaml
|
||||||
|
touch /flarum/app/public/assets/.installed.lock
|
||||||
|
fi
|
||||||
|
|
||||||
|
# first arg is `-f` or `--some-option`
|
||||||
|
if [[ "${1#-}" != "$1" ]]; then
|
||||||
|
set -- apache2-foreground "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$@"
|
58
docker/make_config.php
Normal file
58
docker/make_config.php
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
function get_env($key, $default = null) {
|
||||||
|
$value = getenv($key);
|
||||||
|
if ($value === false) {
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$config = array();
|
||||||
|
|
||||||
|
# Debugging
|
||||||
|
if (get_env('DEBUG')) {
|
||||||
|
$config['debug'] = $_ENV['DEBUG'];
|
||||||
|
}
|
||||||
|
|
||||||
|
# Database connection
|
||||||
|
$config['databaseConfiguration'] = array(
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'host' => get_env('MYSQL_HOST', 'mysql'),
|
||||||
|
'port' => get_env('MYSQL_PORT', 3306),
|
||||||
|
'database' => get_env('MYSQL_DATABASE', 'flarum'),
|
||||||
|
'username' => get_env('MYSQL_USER', 'flarum'),
|
||||||
|
'password' => get_env('MYSQL_PASSWORD', 'flarum'),
|
||||||
|
);
|
||||||
|
|
||||||
|
# Site URL
|
||||||
|
$config['baseUrl'] = get_env('SITE_URL', 'http://localhost');
|
||||||
|
|
||||||
|
# Admin user
|
||||||
|
if (get_env('ADMIN_PASSWORD')) {
|
||||||
|
$config['adminUser'] = array(
|
||||||
|
'username' => get_env('ADMIN_USER', 'admin'),
|
||||||
|
'password' => get_env('ADMIN_PASSWORD', 'password'),
|
||||||
|
'email' => get_env('ADMIN_EMAIL', 'admin@example.com'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Other settings
|
||||||
|
$config['settings'] = array(
|
||||||
|
'forum_title' => get_env('FORUM_TITLE', 'A new Flarum forum'),
|
||||||
|
'forum_description' => get_env('FORUM_DESCRIPTION', ''),
|
||||||
|
'mail_driver' => get_env('MAIL_DRIVER', 'mail'),
|
||||||
|
'mail_from' => get_env('MAIL_FROM', 'noreply@localhost'),
|
||||||
|
'mail_host' => get_env('MAIL_HOST', 'localhost'),
|
||||||
|
'mail_port' => get_env('MAIL_PORT', '25'),
|
||||||
|
'mail_encryption' => get_env('MAIL_ENCRYPTION', ''), // "tls" or "ssl"
|
||||||
|
'mail_username' => get_env('MAIL_USERNAME'), // required
|
||||||
|
'mail_password' => get_env('MAIL_PASSWORD'), // required
|
||||||
|
'theme_colored_header' => get_env('THEME_COLORED_HEADER', '0'),
|
||||||
|
'theme_dark_mode' => get_env('THEME_DARK_MODE', '0'),
|
||||||
|
'theme_primary_color' => get_env('THEME_PRIMARY_COLOR', '#4D698E'),
|
||||||
|
'theme_secondary_color' => get_env('THEME_SECONDARY_COLOR', '#4D698E'),
|
||||||
|
'welcome_message' => get_env('WELCOME_MESSAGE', 'Enjoy your new forum! Hop over to discuss.flarum.org if you have any questions, or to join our community!'),
|
||||||
|
'welcome_title' => get_env('WELCOME_TITLE', 'Welcome to Flarum'),
|
||||||
|
);
|
||||||
|
|
||||||
|
yaml_emit_file('./config.yaml', $config);
|
Loading…
Reference in New Issue
Block a user