Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .docker-compose/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
DB_DRIVER=pgsql
DB_ROOT_PASS=secret1
DB_USER_NAME=ulogger
DB_USER_PASS=secret2

ULOGGER_ADMIN_USER=admin
ULOGGER_ADMIN_PASS=admin
ULOGGER_LANG=en_US.utf-8
21 changes: 21 additions & 0 deletions .docker-compose/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: ulogger

services:
ulogger-server:
build:
context: ../
args:
DB_DRIVER: ${DB_DRIVER}
DB_ROOT_PASS: ${DB_ROOT_PASS}
DB_USER_NAME: ${DB_USER_NAME}
DB_USER_PASS: ${DB_USER_PASS}
ULOGGER_ADMIN_USER: ${ULOGGER_ADMIN_USER}
ULOGGER_ADMIN_PASS: ${ULOGGER_ADMIN_PASS}
ULOGGER_LANG: ${ULOGGER_LANG}
container_name: ulogger_server
image: bfabiszewski/ulogger
env_file:
- .env
volumes:
- ./local/path/for/data:/data
restart: always
3 changes: 3 additions & 0 deletions .docker/hash_pwd.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?php
echo password_hash($argv[1], PASSWORD_DEFAULT);
?>
43 changes: 22 additions & 21 deletions .docker/init.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
#!/bin/sh

DB_ROOT_PASS=$1
DB_USER_PASS=$2

mkdir -p /run/nginx
chown nginx:nginx /run/nginx

Expand All @@ -18,36 +15,40 @@ ln -s /data/uploads /var/www/html/uploads
chown nobody:nobody /var/www/html/uploads
chmod 775 /var/www/html/uploads

if [ "$ULOGGER_DB_DRIVER" = "sqlite" ]; then
# Hash admin user password for insert in db later
ULOGGER_ADMIN_PASS_HASHED=$(php -f /var/www/html/.docker/hash_pwd.php "${ULOGGER_ADMIN_PASS}")

# Prepare ulogger database
if [ "${DB_DRIVER}" = "sqlite" ]; then
sed -i "s/^\$dbuser = .*$//" /var/www/html/config.php
sed -i "s/^\$dbpass = .*$//" /var/www/html/config.php
else
sed -i "s/^\$dbuser = .*$/\$dbuser = \"ulogger\";/" /var/www/html/config.php
sed -i "s/^\$dbuser = .*$/\$dbuser = \"${DB_USER_NAME}\";/" /var/www/html/config.php
sed -i "s/^\$dbpass = .*$/\$dbpass = \"${DB_USER_PASS}\";/" /var/www/html/config.php
fi

if [ "$ULOGGER_DB_DRIVER" = "pgsql" ]; then
if [ "${DB_DRIVER}" = "pgsql" ]; then
export PGDATA=/data/pgsql
mkdir -p ${PGDATA} /run/postgresql /etc/postgres
chown postgres:postgres ${PGDATA} /run/postgresql /etc/postgres
su postgres -c "initdb --auth-host=md5 --auth-local=trust --locale=en_US.utf-8 --encoding=utf8"
su postgres -c "initdb --auth-host=md5 --auth-local=trust --locale=${ULOGGER_LANG} --encoding=utf8"
sed -ri "s/^#(listen_addresses\s*=\s*)\S+/\1'*'/" ${PGDATA}/postgresql.conf
echo "host all all 0.0.0.0/0 md5" >> ${PGDATA}/pg_hba.conf
su postgres -c "pg_ctl -w start"
su postgres -c "psql -c \"ALTER USER postgres WITH PASSWORD '${DB_ROOT_PASS}'\""
su postgres -c "psql -c \"CREATE USER ulogger WITH PASSWORD '${DB_USER_PASS}'\""
su postgres -c "createdb -E UTF8 -l en_US.utf-8 -O ulogger ulogger"
su postgres -c "psql -U ulogger < /var/www/html/scripts/ulogger.pgsql"
su postgres -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE ulogger TO ulogger\""
su postgres -c "psql -d ulogger -c \"GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO ulogger\""
su postgres -c "psql -d ulogger -c \"GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO ulogger\""
su postgres -c "psql -d ulogger -c \"INSERT INTO users (login, password, admin) VALUES ('${ULOGGER_ADMIN_USER}', '\\\$2y\\\$10\\\$7OvZrKgonVZM9lkzrTbiou.CVhO3HjPk5y0W9L68fVwPs/osBRIMq', TRUE)\""
su postgres -c "psql -c \"CREATE USER ${DB_USER_NAME} WITH PASSWORD '${DB_USER_PASS}'\""
su postgres -c "createdb -E UTF8 -l en_US.utf-8 -O ${DB_USER_NAME} ulogger"
su postgres -c "psql -U ${DB_USER_NAME} < /var/www/html/scripts/ulogger.pgsql"
su postgres -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE ulogger TO ${DB_USER_NAME}\""
su postgres -c "psql -d ulogger -c \"GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO ${DB_USER_NAME}\""
su postgres -c "psql -d ulogger -c \"GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO ${DB_USER_NAME}\""
su postgres -c "psql -d ulogger -c 'INSERT INTO users (login, password, admin) VALUES ('\''${ULOGGER_ADMIN_USER}'\'', '\''${ULOGGER_ADMIN_PASS_HASHED}'\'', TRUE)'"
su postgres -c "pg_ctl -w stop"
sed -i "s/^\$dbdsn = .*$/\$dbdsn = \"pgsql:host=localhost;port=5432;dbname=ulogger\";/" /var/www/html/config.php
elif [ "$ULOGGER_DB_DRIVER" = "sqlite" ]; then
elif [ "${DB_DRIVER}" = "sqlite" ]; then
mkdir -p /data/sqlite
sqlite3 -init /var/www/html/scripts/ulogger.sqlite /data/sqlite/ulogger.db .exit
sqlite3 -line /data/sqlite/ulogger.db "INSERT INTO users (login, password, admin) VALUES ('${ULOGGER_ADMIN_USER}', '\$2y\$10\$7OvZrKgonVZM9lkzrTbiou.CVhO3HjPk5y0W9L68fVwPs/osBRIMq', 1)"
sqlite3 -line /data/sqlite/ulogger.db "INSERT INTO users (login, password, admin) VALUES ('${ULOGGER_ADMIN_USER}', '${ULOGGER_ADMIN_PASS_HASHED}', 1)"
chown -R nobody:nobody /data/sqlite
sed -i "s/^\$dbdsn = .*$/\$dbdsn = \"sqlite:\/data\/sqlite\/ulogger.db\";/" /var/www/html/config.php
else
Expand All @@ -59,11 +60,11 @@ else
mysqladmin --silent --wait=30 ping
mysqladmin -u root password "${DB_ROOT_PASS}"
mysql -u root -p"${DB_ROOT_PASS}" < /var/www/html/scripts/ulogger.mysql
mysql -u root -p"${DB_ROOT_PASS}" -e "CREATE USER 'ulogger'@'localhost' IDENTIFIED BY '${DB_USER_PASS}'"
mysql -u root -p"${DB_ROOT_PASS}" -e "GRANT ALL PRIVILEGES ON ulogger.* TO 'ulogger'@'localhost'"
mysql -u root -p"${DB_ROOT_PASS}" -e "CREATE USER 'ulogger'@'%' IDENTIFIED BY '${DB_USER_PASS}'"
mysql -u root -p"${DB_ROOT_PASS}" -e "GRANT ALL PRIVILEGES ON ulogger.* TO 'ulogger'@'%'"
mysql -u root -p"${DB_ROOT_PASS}" -e "INSERT INTO users (login, password, admin) VALUES ('${ULOGGER_ADMIN_USER}', '\$2y\$10\$7OvZrKgonVZM9lkzrTbiou.CVhO3HjPk5y0W9L68fVwPs/osBRIMq', TRUE)" ulogger
mysql -u root -p"${DB_ROOT_PASS}" -e "CREATE USER '${DB_USER_NAME}'@'localhost' IDENTIFIED BY '${DB_USER_PASS}'"
mysql -u root -p"${DB_ROOT_PASS}" -e "GRANT ALL PRIVILEGES ON ulogger.* TO '${DB_USER_NAME}'@'localhost'"
mysql -u root -p"${DB_ROOT_PASS}" -e "CREATE USER '${DB_USER_NAME}'@'%' IDENTIFIED BY '${DB_USER_PASS}'"
mysql -u root -p"${DB_ROOT_PASS}" -e "GRANT ALL PRIVILEGES ON ulogger.* TO '${DB_USER_NAME}'@'%'"
mysql -u root -p"${DB_ROOT_PASS}" -e "INSERT INTO users (login, password, admin) VALUES ('${ULOGGER_ADMIN_USER}', '${ULOGGER_ADMIN_PASS}', TRUE)" ulogger
mysqladmin -u root -p"${DB_ROOT_PASS}" shutdown
sed -i "s/^\$dbdsn = .*$/\$dbdsn = \"mysql:host=localhost;port=3306;dbname=ulogger;charset=utf8\";/" /var/www/html/config.php
fi
1 change: 1 addition & 0 deletions .docker/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ server {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
}

}
15 changes: 2 additions & 13 deletions .docker/run.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,9 @@
#!/bin/sh

if [ "${ULOGGER_ENABLE_SETUP}" = "1" ]; then
sed -i "s/\$enabled = false;/\$enabled = true;/" /var/www/html/scripts/setup.php;
echo "ulogger setup script enabled"
echo "----------------------------"
fi

# show config variables
echo "ulogger configuration"
echo "---------------------"
grep '^\$' /var/www/html/config.php

# start services
if [ "$ULOGGER_DB_DRIVER" = "pgsql" ]; then
if [ "${DB_DRIVER}" = "pgsql" ]; then
su postgres -c 'pg_ctl -D /data/pgsql start'
elif [ "$ULOGGER_DB_DRIVER" = "mysql" ]; then
elif [ "${DB_DRIVER}" = "mysql" ]; then
mysqld_safe --datadir=/data/mysql &
fi
nginx
Expand Down
30 changes: 17 additions & 13 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,25 @@ FROM alpine:3.15

LABEL maintainer="Bartek Fabiszewski (https://github.com/bfabiszewski)"

ARG DB_ROOT_PASS=secret1
ARG DB_USER_PASS=secret2
# supported drivers: mysql, pgsql, sqlite
ARG DB_DRIVER=mysql

ENV ULOGGER_ADMIN_USER admin
ENV ULOGGER_DB_DRIVER ${DB_DRIVER}
ENV ULOGGER_ENABLE_SETUP 0

ENV LANG=en_US.utf-8
ARG DB_DRIVER
ARG DB_ROOT_PASS
ARG DB_USER_NAME
ARG DB_USER_PASS
ARG ULOGGER_ADMIN_USER
ARG ULOGGER_ADMIN_PASS
ARG ULOGGER_LANG

ENV DB_DRIVER=${DB_DRIVER}
ENV DB_ROOT_PASS=${DB_ROOT_PASS}
ENV DB_USER_NAME=${DB_USER_NAME}
ENV DB_USER_PASS=${DB_USER_PASS}
ENV ULOGGER_ADMIN_USER=${ULOGGER_ADMIN_USER}
ENV ULOGGER_ADMIN_PASS=${ULOGGER_ADMIN_PASS}
ENV ULOGGER_LANG=${ULOGGER_LANG}

RUN apk add --no-cache \
nginx \
php7-ctype php7-fpm php7-json php7-pdo php7-session php7-simplexml php7-xmlwriter
php7 php7-fpm php7-ctype php7-json php7-pdo php7-session php7-simplexml php7-xmlwriter
RUN if [ "${DB_DRIVER}" = "mysql" ]; then apk add --no-cache mariadb mariadb-client php7-pdo_mysql; fi
RUN if [ "${DB_DRIVER}" = "pgsql" ]; then apk add --no-cache postgresql postgresql-client php7-pdo_pgsql; fi
RUN if [ "${DB_DRIVER}" = "sqlite" ]; then apk add --no-cache sqlite php7-pdo_sqlite; fi
Expand All @@ -28,7 +33,6 @@ RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
RUN rm -rf /var/www/html
RUN mkdir -p /var/www/html


COPY .docker/run.sh /run.sh
RUN chmod +x /run.sh
COPY .docker/init.sh /init.sh
Expand All @@ -38,7 +42,7 @@ RUN chown nginx.nginx /etc/nginx/http.d/default.conf

COPY . /var/www/html

RUN /init.sh "${DB_ROOT_PASS}" "${DB_USER_PASS}"
RUN /init.sh

EXPOSE 80

Expand Down
3 changes: 2 additions & 1 deletion scripts/ulogger.pgsql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
-- Database: `ulogger`
--

CREATE DATABASE ulogger WITH ENCODING='UTF8' LC_COLLATE = 'en_US.utf-8' LC_CTYPE = 'en_US.utf-8';
SELECT 'CREATE DATABASE ulogger WITH ENCODING = ''UTF8'' LC_COLLATE = ''en_US.utf-8'' LC_CTYPE = ''en_US.utf-8'''
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'ulogger')\gexec
\connect ulogger;

-- --------------------------------------------------------
Expand Down