|
3 | 3 |
|
4 | 4 | echoerr() { echo "$@" 1>&2; } |
5 | 5 |
|
| 6 | +check_vars_exist() { |
| 7 | + var_names=("$@") |
| 8 | + |
| 9 | + for var_name in "${var_names[@]}"; do |
| 10 | + if [ -z "${!var_name}" ]; then |
| 11 | + echoerr "error: missing ${var_name} environment variable" |
| 12 | + exit 1 |
| 13 | + fi |
| 14 | + done |
| 15 | +} |
| 16 | + |
6 | 17 | # Split out host and port from DB_HOST env variable |
7 | 18 | IFS=":" read -r DB_HOST_NAME DB_PORT <<< "$DB_HOST" |
8 | 19 | DB_PORT=${DB_PORT:-3306} |
9 | 20 |
|
10 | | -if [ ! -f ".env" ]; then |
11 | | - if [[ "${DB_HOST}" ]]; then |
12 | | - cat > ".env" <<EOF |
13 | | - # Environment |
14 | | - APP_ENV=production |
15 | | - APP_DEBUG=${APP_DEBUG:-false} |
16 | | - APP_KEY=${APP_KEY:-SomeRandomStringWith32Characters} |
17 | | -
|
18 | | - # The below url has to be set if using social auth options |
19 | | - # or if you are not using BookStack at the root path of your domain. |
20 | | - APP_URL=${APP_URL:-null} |
21 | | -
|
22 | | - # Database details |
23 | | - DB_HOST=${DB_HOST:-localhost} |
24 | | - DB_DATABASE=${DB_DATABASE:-bookstack} |
25 | | - DB_USERNAME=${DB_USERNAME:-bookstack} |
26 | | - DB_PASSWORD=${DB_PASSWORD:-password} |
27 | | -
|
28 | | - # Cache and session |
29 | | - CACHE_DRIVER=file |
30 | | - SESSION_DRIVER=file |
31 | | - # If using Memcached, comment the above and uncomment these |
32 | | - #CACHE_DRIVER=memcached |
33 | | - #SESSION_DRIVER=memcached |
34 | | - QUEUE_DRIVER=sync |
35 | | -
|
36 | | - # Memcached settings |
37 | | - # If using a UNIX socket path for the host, set the port to 0 |
38 | | - # This follows the following format: HOST:PORT:WEIGHT |
39 | | - # For multiple servers separate with a comma |
40 | | - MEMCACHED_SERVERS=127.0.0.1:11211:100 |
41 | | -
|
42 | | - # Storage |
43 | | - STORAGE_TYPE=${STORAGE_TYPE:-local} |
44 | | - # Amazon S3 Config |
45 | | - STORAGE_S3_KEY=${STORAGE_S3_KEY:-false} |
46 | | - STORAGE_S3_SECRET=${STORAGE_S3_SECRET:-false} |
47 | | - STORAGE_S3_REGION=${STORAGE_S3_REGION:-false} |
48 | | - STORAGE_S3_BUCKET=${STORAGE_S3_BUCKET:-false} |
49 | | - # Storage URL |
50 | | - # Used to prefix image urls for when using custom domains/cdns |
51 | | - STORAGE_URL=${STORAGE_URL:-false} |
52 | | -
|
53 | | - # General auth |
54 | | - AUTH_METHOD=${AUTH_METHOD:-standard} |
55 | | -
|
56 | | - # Social Authentication information. Defaults as off. |
57 | | - GITHUB_APP_ID=${GITHUB_APP_ID:-false} |
58 | | - GITHUB_APP_SECRET=${GITHUB_APP_SECRET:-false} |
59 | | - GOOGLE_APP_ID=${GOOGLE_APP_ID:-false} |
60 | | - GOOGLE_APP_SECRET=${GOOGLE_APP_SECRET:-false} |
61 | | -
|
62 | | - # External services such as Gravatar |
63 | | - DISABLE_EXTERNAL_SERVICES=${DISABLE_EXTERNAL_SERVICES:-false} |
64 | | -
|
65 | | - # LDAP Settings |
66 | | - LDAP_SERVER=${LDAP_SERVER:-false} |
67 | | - LDAP_BASE_DN=${LDAP_BASE_DN:-false} |
68 | | - LDAP_DN=${LDAP_DN:-false} |
69 | | - LDAP_PASS=${LDAP_PASS:-false} |
70 | | - LDAP_USER_FILTER=${LDAP_USER_FILTER:-false} |
71 | | - LDAP_VERSION=${LDAP_VERSION:-false} |
72 | | - LDAP_ID_ATTRIBUTE=${LDAP_ID_ATTRIBUTE:-false} |
73 | | - LDAP_TLS_INSECURE=${LDAP_TLS_INSECURE:-false} |
74 | | - LDAP_DISPLAY_NAME_ATTRIBUTE=${LDAP_DISPLAY_NAME_ATTRIBUTE:-false} |
75 | | -
|
76 | | - # Mail settings |
77 | | - MAIL_DRIVER=${MAIL_DRIVER:-smtp} |
78 | | - MAIL_HOST=${MAIL_HOST:-localhost} |
79 | | - MAIL_PORT=${MAIL_PORT:-1025} |
80 | | - MAIL_USERNAME=${MAIL_USERNAME:-null} |
81 | | - MAIL_PASSWORD=${MAIL_PASSWORD:-null} |
82 | | - MAIL_ENCRYPTION=${MAIL_ENCRYPTION:-null} |
83 | | - # URL used for social login redirects, NO TRAILING SLASH |
84 | | -EOF |
85 | | - else |
86 | | - echo >&2 'error: missing DB_HOST environment variable' |
87 | | - exit 1 |
88 | | - fi |
| 21 | +# Ensure these is no local .env file |
| 22 | +if [ -f ".env" ]; then |
| 23 | + mv .env .env.bak |
| 24 | + echoerr ".env file detected - moved to .env.bak" |
| 25 | + echoerr "Please update your configuration to use environment variables in the container!" |
89 | 26 | fi |
90 | 27 |
|
| 28 | +# Check a number of essential variables are set |
| 29 | +check_vars_exist \ |
| 30 | + APP_KEY \ |
| 31 | + APP_URL \ |
| 32 | + DB_DATABASE \ |
| 33 | + DB_HOST \ |
| 34 | + DB_PASSWORD \ |
| 35 | + DB_PORT \ |
| 36 | + DB_USERNAME |
| 37 | + |
91 | 38 | echoerr "wait-for-db: waiting for ${DB_HOST_NAME}:${DB_PORT}" |
92 | 39 |
|
93 | 40 | timeout 15 bash <<EOT |
|
105 | 52 | echoerr "wait-for-db: timeout out after 15 seconds waiting for ${DB_HOST_NAME}:${DB_PORT}" |
106 | 53 | fi |
107 | 54 |
|
108 | | -echo "Generating Key..." |
109 | | -php artisan key:generate --show |
110 | | - |
111 | 55 | echo "Starting Migration..." |
112 | 56 | php artisan migrate --force |
113 | 57 |
|
|
0 commit comments