|
1 | 1 | #!/bin/bash |
2 | 2 | INIT_DB=${DB_PASSWORD:-FALSE} |
| 3 | +IDB_TYPE=${DB_TYPE:-mysql} |
3 | 4 | IDB_HOST=${DB_HOST:-localhost} |
4 | 5 | IDB_PORT=${DB_PORT:-3306} |
5 | 6 | IDB_USER=${DB_USER:-root} |
| 7 | + |
| 8 | +# Change default port and database user if using postgres |
| 9 | +if [ "$IDB_TYPE" = "postgres" ]; then |
| 10 | + IDB_PORT=${DB_PORT:-5432} |
| 11 | + IDB_USER=${DB_USER:-postgres} |
| 12 | +fi |
| 13 | + |
6 | 14 | IDB_PASSWORD=${DB_PASSWORD:-password} |
7 | 15 | IDB_DB_NAME=${DB_NAME:-webtrees} |
8 | 16 | IDB_DB_PREFIX="wt_" |
|
20 | 28 | else |
21 | 29 | echo "Creating the initial database settings in configuration file $CONFIG_FILE and creating database." |
22 | 30 | cp /config.ini.php "$CONFIG_FILE" |
| 31 | + sed -i 's/<DB_TYPE>/'"$IDB_TYPE"'/g' "$CONFIG_FILE" |
23 | 32 | sed -i 's/<DB_HOST>/'"$IDB_HOST"'/g' "$CONFIG_FILE" |
24 | 33 | sed -i 's/<DB_PORT>/'"$IDB_PORT"'/g' "$CONFIG_FILE" |
25 | 34 | sed -i 's/<DB_USER>/'"$IDB_USER"'/g' "$CONFIG_FILE" |
|
29 | 38 | chown www-data:docker-data "$CONFIG_FILE" |
30 | 39 | chmod 660 "$CONFIG_FILE" |
31 | 40 | #Create database structure and add admin user |
32 | | - cp /webtrees.sql /mod_webtrees.sql |
| 41 | + if [ "$IDB_TYPE" = "postgres" ]; then |
| 42 | + SQL_FILE="/webtrees-postgres.sql" |
| 43 | + else |
| 44 | + SQL_FILE="/webtrees.sql" |
| 45 | + fi |
| 46 | + |
| 47 | + cp "$SQL_FILE" /mod_webtrees.sql |
33 | 48 | sed -i 's/<DB_NAME>/'"$IDB_DB_NAME"'/g' /mod_webtrees.sql |
34 | 49 | sed -i 's/<WT_ADMIN_NAME>/'"$IDB_WT_ADMIN"'/g' /mod_webtrees.sql |
| 50 | + |
35 | 51 | #Encode password and escape for sed |
36 | 52 | RANDOM22=$(php -r "echo substr(base64_encode(openssl_random_pseudo_bytes(17)),0,22);") |
37 | 53 | WTSALT=$(php -r "echo '\$2y\$10\$'.str_replace('+','.','$RANDOM22');") |
38 | 54 | WTCRYPT=$(php -r "echo crypt('$IDB_WT_ADMINPW', '$WTSALT');") |
39 | 55 | sed -i 's/<WT_ADMIN_PW>/'"$(echo $WTCRYPT | sed -e 's/[]\/$*.^[]/\\&/g')"'/g' /mod_webtrees.sql |
40 | 56 | sed -i 's/<WT_ADMIN_MAIL>/'"$IDB_WT_ADMINMAIL"'/g' /mod_webtrees.sql |
41 | | - #Write to mysql database |
42 | | - until mysqladmin ping -h "$IDB_HOST" --silent; do |
43 | | - echo "Waiting for database to be ready ..." |
44 | | - sleep 1 |
45 | | - done |
46 | | - echo "Database ready. Writing database." |
47 | | - mysql -u "$IDB_USER" --password="$IDB_PASSWORD" -h "$IDB_HOST" < /mod_webtrees.sql |
48 | | - #Alternative to set Webtrees admin user: |
49 | | - #echo "UPDATE wt_user SET user_name='$IDB_WT_ADMIN', email='$IDB_WT_ADMINMAIL', real_name='Admin', password='$WTCRYPT' WHERE user_id=1" | mysql -u "$IDB_USER" --password="$IDB_PASSWORD" -h "$IDB_HOST" "$IDB_DB_NAME" |
| 57 | + |
| 58 | + # Wait for database and write schema based on type |
| 59 | + if [ "$IDB_TYPE" = "postgres" ]; then |
| 60 | + echo "Using PostgreSQL database" |
| 61 | + until pg_isready -h "$IDB_HOST" -p "$IDB_PORT" -U "$IDB_USER" > /dev/null 2>&1; do |
| 62 | + echo "Waiting for PostgreSQL database to be ready ..." |
| 63 | + sleep 1 |
| 64 | + done |
| 65 | + echo "PostgreSQL database ready. Writing database." |
| 66 | + export PGPASSWORD="$IDB_PASSWORD" |
| 67 | + psql -h "$IDB_HOST" -p "$IDB_PORT" -U "$IDB_USER" -d postgres -f /mod_webtrees.sql |
| 68 | + unset PGPASSWORD |
| 69 | + else |
| 70 | + echo "Using MySQL/MariaDB database" |
| 71 | + until mysqladmin ping -h "$IDB_HOST" --silent; do |
| 72 | + echo "Waiting for MySQL/MariaDB database to be ready ..." |
| 73 | + sleep 1 |
| 74 | + done |
| 75 | + echo "MySQL/MariaDB database ready. Writing database." |
| 76 | + mysql -u "$IDB_USER" --password="$IDB_PASSWORD" -h "$IDB_HOST" < /mod_webtrees.sql |
| 77 | + fi |
| 78 | + |
50 | 79 | unset RANDOM22 |
51 | 80 | unset WTSALT |
52 | 81 | unset WTCRYPT |
|
0 commit comments