Skip to content

Commit 62b7915

Browse files
HomerHomer
Homer
authored and
Homer
committed
new symlink logic (cheers heimdall) and advanced mode for .env mods
1 parent 73287fa commit 62b7915

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

root/etc/cont-init.d/50-config

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,43 @@
11
#!/usr/bin/with-contenv bash
22

3-
# create our folders
3+
# create directory structure
44
mkdir -p \
5-
/config/storage \
6-
/config/public/uploads
5+
/config/www/{files,images,uploads,logs}
76

8-
# make folder symlinks
7+
# create symlinks
98
symlinks=( \
10-
/var/www/html/storage \
9+
/var/www/html/storage/logs \
10+
/var/www/html/storage/uploads/files \
11+
/var/www/html/storage/uploads/images \
1112
/var/www/html/public/uploads )
1213

1314
for i in "${symlinks[@]}"
1415
do
1516
[[ -e "$i" && ! -L "$i" ]] && rm -rf "$i"
16-
[[ ! -L "$i" ]] && ln -s /config/"$(basename "$i")" "$i"
17+
[[ ! -L "$i" ]] && ln -s /config/www/"$(basename "$i")" "$i"
1718
done
1819

19-
# check for ADVANCED_MODE to be != 0; copy sample env file to /config and ln to /var/www/html if != 0, if = 0 then copy .example.env to .env and run seds
20-
if [ "$ADVANCED_MODE" == 1 && ! -f "/config/.env" ];
20+
# Check for ADVANCED_MODE to be set. If set, copy sample env file to /config and then copy to /var/www/html.env so advanced users can make their own customisations
21+
# If not set, runs in basic mode where .example.env is copied to /var/www/html/.env and seds are applied to set documented variables
22+
if [ "$ADVANCED_MODE" == 1 ];
2123
then
22-
echo "Advanced Mode"
23-
cp /var/www/html/.env.example /config/.env
24-
ln -s /config/.env /var/www/html/.env
24+
echo "Advanced Mode Enabled - Syncing .env from /config to /var/www/html"
25+
[[ ! -f "/config/.env" ]] && \
26+
cp /var/www/html/.env.example /config/.env
27+
cp /config/.env /var/www/html/.env
2528
elif [ -z "$ADVANCED_MODE" ];
26-
echo "Basic Mode"
29+
then
30+
echo "Basic Mode Enabled - Using sed to set BookStack variables from Docker environment variables - check the docs"
2731
cp /var/www/html/.env.example /var/www/html/.env
32+
# set up .env
33+
sed -i "s/APP_KEY=SomeRandomString/APP_KEY=$key/g" /var/www/html/.env
34+
sed -i "s/DB_HOST=localhost/DB_HOST=${DB_HOST}/g" /var/www/html/.env
35+
sed -i "s/DB_DATABASE=database_database/DB_DATABASE=${DB_DATABASE}/g" /var/www/html/.env
36+
sed -i "s/DB_USERNAME=database_username/DB_USERNAME=${DB_USER}/g" /var/www/html/.env
37+
sed -i "s/DB_PASSWORD=database_user_password/DB_PASSWORD=${DB_PASS}/g" /var/www/html/.env
38+
sed -i "s/# APP_URL=.*/APP_URL=${APP_URL}/g" /var/www/html/.env
2839
else
29-
echo "Finished symlinks"
40+
echo "Nothing to do with .env - what did you do homer?"
3041
fi
3142

3243
# Create API key if needed
@@ -38,14 +49,6 @@ if [ ! -f "/config/BOOKSTACK_APP_KEY.txt" ]
3849
echo "App Key set to $key you can modify the file to update /config/BOOKSTACK_APP_KEY.txt"
3950
fi
4051

41-
# set up .env
42-
sed -i "s/APP_KEY=SomeRandomString/APP_KEY=$key/g" /var/www/html/.env
43-
sed -i "s/DB_HOST=localhost/DB_HOST=${DB_HOST}/g" /var/www/html/.env
44-
sed -i "s/DB_DATABASE=database_database/DB_DATABASE=${DB_DATABASE}/g" /var/www/html/.env
45-
sed -i "s/DB_USERNAME=database_username/DB_USERNAME=${DB_USER}/g" /var/www/html/.env
46-
sed -i "s/DB_PASSWORD=database_user_password/DB_PASSWORD=${DB_PASS}/g" /var/www/html/.env
47-
#sed -i "s/.*APP_URL=.*/APP_URL=${APP_URL}/g" /var/www/html/.env
48-
4952
# update database - will set up database if fresh, or, migrate existing
5053
php /var/www/html/artisan migrate --force
5154

0 commit comments

Comments
 (0)