diff options
author | Michal Kostewicz <m.kostewicz84@gmail.com> | 2021-02-07 12:43:41 +0100 |
---|---|---|
committer | Michal Kostewicz <m.kostewicz84@gmail.com> | 2021-02-07 12:43:41 +0100 |
commit | 7329a7fd852082f0216b4f67f1912eaa601981fc (patch) | |
tree | 1209c90933e646dbbfa1bbc706eb6ec48d5d5050 /docker | |
parent | Modifying Dockerfile so that it can use the current application code to build... (diff) | |
download | ferdium-server-7329a7fd852082f0216b4f67f1912eaa601981fc.tar.gz ferdium-server-7329a7fd852082f0216b4f67f1912eaa601981fc.tar.zst ferdium-server-7329a7fd852082f0216b4f67f1912eaa601981fc.zip |
Add new configuration for docker with small script to generate or use APP_KEY. docker-compose was adjusted to use DATA_DIR.
Diffstat (limited to 'docker')
-rw-r--r-- | docker/Dockerfile | 109 | ||||
-rw-r--r-- | docker/docker-compose.yml | 5 | ||||
-rwxr-xr-x | docker/entrypoint.sh | 40 | ||||
-rwxr-xr-x | docker/root/defaults/.env.example | 35 | ||||
-rwxr-xr-x | docker/root/etc/cont-init.d/10-adduser | 32 | ||||
-rwxr-xr-x | docker/root/etc/cont-init.d/50-config | 174 | ||||
-rwxr-xr-x | docker/root/etc/services.d/ferdi-server/run | 10 |
7 files changed, 63 insertions, 342 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index a561509..799bb0b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile | |||
@@ -1,96 +1,27 @@ | |||
1 | FROM lsiobase/alpine:3.11 | 1 | FROM node:lts-alpine as build |
2 | 2 | ||
3 | # version labels | 3 | WORKDIR /server-build |
4 | ARG BUILD_DATE | 4 | |
5 | LABEL build_version="Ferdi-server-docker Build-date:- ${BUILD_DATE}" | 5 | RUN ["apk", "add", "--no-cache", "python", "make", "gcc", "g++", "libc-dev", "sqlite-dev"] |
6 | |||
7 | COPY . /server-build | ||
8 | |||
9 | RUN ["npm", "ci", "--production", "--build-from-source", "--sqlite=/usr/local"] | ||
10 | |||
11 | FROM node:lts-alpine | ||
12 | |||
13 | WORKDIR /app | ||
6 | LABEL maintainer="xthursdayx" | 14 | LABEL maintainer="xthursdayx" |
7 | 15 | ||
8 | ARG FERDI_RELEASE | 16 | ENV HOST=0.0.0.0 PORT=3333 |
9 | ENV NODE_VERSION=10.16.3 | ||
10 | ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 | ||
11 | 17 | ||
12 | # install packages | 18 | RUN ["apk", "add", "--no-cache", "sqlite-libs", "curl"] |
13 | RUN \ | ||
14 | echo "**** installing build packages ****" && \ | ||
15 | apk add --no-cache \ | ||
16 | libcap \ | ||
17 | libstdc++ \ | ||
18 | nano && \ | ||
19 | apk add --no-cache --virtual .build-deps \ | ||
20 | binutils-gold \ | ||
21 | curl \ | ||
22 | gnupg \ | ||
23 | gcc \ | ||
24 | g++ \ | ||
25 | linux-headers \ | ||
26 | make \ | ||
27 | memcached \ | ||
28 | python && \ | ||
29 | echo "**** downloading keys ****" && \ | ||
30 | # gpg keys listed at https://github.com/nodejs/node#release-keys | ||
31 | for key in \ | ||
32 | 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ | ||
33 | FD3A5288F042B6850C66B31F09FE44734EB7990E \ | ||
34 | 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ | ||
35 | DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ | ||
36 | C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ | ||
37 | B9AE9905FFD7803F25714661B63B535A4C206CA9 \ | ||
38 | 77984A986EBC2AA786BC0F66B01FBB92821C587A \ | ||
39 | 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ | ||
40 | 4ED778F539E3634C779C87C6D7062848A1AB005C \ | ||
41 | A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ | ||
42 | B9E2F5981AA6E0CD28160D9FF13993A75599653C \ | ||
43 | ; do \ | ||
44 | gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ | ||
45 | gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ | ||
46 | gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ | ||
47 | done && \ | ||
48 | echo "**** installing node ****" && \ | ||
49 | curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" && \ | ||
50 | curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && \ | ||
51 | gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && \ | ||
52 | grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - && \ | ||
53 | tar -xf "node-v$NODE_VERSION.tar.xz" && \ | ||
54 | cd "node-v$NODE_VERSION" && \ | ||
55 | ./configure --prefix=/usr && \ | ||
56 | make -j$(getconf _NPROCESSORS_ONLN) V= && \ | ||
57 | make install && \ | ||
58 | apk del .build-deps && \ | ||
59 | cd / && \ | ||
60 | rm -Rf "node-v$NODE_VERSION" && \ | ||
61 | rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt | ||
62 | 19 | ||
63 | COPY . /app | 20 | COPY --from=build /server-build /app |
64 | 21 | RUN ["touch", ".env"] | |
65 | RUN \ | 22 | RUN ["npm", "i", "-g", "@adonisjs/cli"] |
66 | apk add --no-cache --virtual .build-deps-ferdi \ | ||
67 | curl \ | ||
68 | gnupg \ | ||
69 | tar && \ | ||
70 | echo "**** installing npm ****" && \ | ||
71 | npm config set unsafe-perm true && \ | ||
72 | npm install -g npm@latest && \ | ||
73 | find /usr/lib/node_modules/npm -name test -o -name .bin -type d | xargs rm -rf && \ | ||
74 | echo "**** cleanup ****" && \ | ||
75 | apk del .build-deps-ferdi && \ | ||
76 | rm -rf \ | ||
77 | ${RM_DIRS} \ | ||
78 | /SHASUMS256.txt \ | ||
79 | /tmp/* \ | ||
80 | /var/cache/apk/* \ | ||
81 | /usr/share/man/* \ | ||
82 | /usr/share/doc \ | ||
83 | /root/.node-gyp \ | ||
84 | /root/.config \ | ||
85 | /usr/lib/node_modules/npm/man \ | ||
86 | /usr/lib/node_modules/npm/doc \ | ||
87 | /usr/lib/node_modules/npm/html \ | ||
88 | /usr/lib/node_modules/npm/scripts | ||
89 | |||
90 | COPY docker/root/ / | ||
91 | 23 | ||
92 | USER root | 24 | HEALTHCHECK --interval=5m --timeout=3s CMD curl -sSf http://localhost:${PORT}/health |
93 | 25 | ||
94 | # ports and volumes | 26 | COPY docker/entrypoint.sh /entrypoint.sh |
95 | EXPOSE 80 443 | 27 | CMD ["/entrypoint.sh"] \ No newline at end of file |
96 | VOLUME /app/database /app/recipes /config | ||
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 7bf1b8c..364f9c3 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml | |||
@@ -24,12 +24,13 @@ services: | |||
24 | - IS_DASHBOARD_ENABLED=true | 24 | - IS_DASHBOARD_ENABLED=true |
25 | - IS_REGISTRATION_ENABLED=true | 25 | - IS_REGISTRATION_ENABLED=true |
26 | - CONNECT_WITH_FRANZ=false | 26 | - CONNECT_WITH_FRANZ=false |
27 | - DATA_DIR=/database | ||
27 | volumes: | 28 | volumes: |
28 | - ferdi-config-vol:/config | 29 | - ferdi-config-vol:/config |
29 | - ferdi-database-vol:/app/database | 30 | - ferdi-database-vol:/database |
30 | - ferdi-recipes-vol:/app/recipes | 31 | - ferdi-recipes-vol:/app/recipes |
31 | ports: | 32 | ports: |
32 | - 3333:80 | 33 | - 3333:3333 |
33 | restart: unless-stopped | 34 | restart: unless-stopped |
34 | volumes: | 35 | volumes: |
35 | ferdi-config-vol: | 36 | ferdi-config-vol: |
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 0000000..cb0dd0f --- /dev/null +++ b/docker/entrypoint.sh | |||
@@ -0,0 +1,40 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | echo << EOL | ||
4 | ------------------------------------- | ||
5 | ____ ___ | ||
6 | / __/__ _______/ (_) | ||
7 | / _// -_) __/ _ / / | ||
8 | _/_/ \__/_/ \_,_/_/ | ||
9 | / __/__ _____ _____ ____ | ||
10 | _\ \/ -_) __/ |/ / -_) __/ | ||
11 | /___/\__/_/ |___/\__/_/ | ||
12 | Brought to you by getferdi.com | ||
13 | Support our Open Collective at: | ||
14 | https://opencollective.com/getferdi/ | ||
15 | EOL | ||
16 | |||
17 | # Create APP key if needed | ||
18 | if [ ! -f "/config/FERDI_APP_KEY.txt" ]; | ||
19 | then | ||
20 | echo " " | ||
21 | echo "**** Generating Ferdi-server app key for first run ****" | ||
22 | adonis key:generate | ||
23 | source .env | ||
24 | echo $APP_KEY > /config/FERDI_APP_KEY.txt | ||
25 | echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****" | ||
26 | sed -i "s/APP_KEY=/APP_KEY=$APP_KEY/g" /config/config.txt | ||
27 | elif [ -f "/config/FERDI_APP_KEY.txt" ]; | ||
28 | then | ||
29 | echo " " | ||
30 | echo "**** App Key found ****" | ||
31 | APP_KEY=$(cat /config/FERDI_APP_KEY.txt) | ||
32 | sed -i "s/APP_KEY=.*/APP_KEY=$APP_KEY/g" /config/config.txt | ||
33 | echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****" | ||
34 | fi | ||
35 | |||
36 | export APP_KEY=$APP_KEY | ||
37 | |||
38 | node ace migration:run --force | ||
39 | |||
40 | exec node server.js | ||
diff --git a/docker/root/defaults/.env.example b/docker/root/defaults/.env.example deleted file mode 100755 index 2ed73dc..0000000 --- a/docker/root/defaults/.env.example +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | HOST=0.0.0.0 | ||
2 | PORT=80 | ||
3 | NODE_ENV=development | ||
4 | |||
5 | APP_NAME=AdonisJs | ||
6 | APP_URL=http://${EXTERNAL_DOMAIN} | ||
7 | EXTERNAL_DOMAIN=ferdi.domain.tld | ||
8 | |||
9 | CACHE_VIEWS=false | ||
10 | |||
11 | APP_KEY=appkey | ||
12 | |||
13 | DB_CONNECTION=sqlite | ||
14 | DB_HOST=127.0.0.1 | ||
15 | DB_PORT=3306 | ||
16 | DB_USER=root | ||
17 | DB_PASSWORD=password | ||
18 | DB_DATABASE=adonis | ||
19 | |||
20 | DB_SSL=false | ||
21 | |||
22 | HASH_DRIVER=bcrypt | ||
23 | |||
24 | IS_CREATION_ENABLED=true | ||
25 | IS_DASHBOARD_ENABLED=true | ||
26 | IS_REGISTRATION_ENABLED=true | ||
27 | CONNECT_WITH_FRANZ=true | ||
28 | |||
29 | MAIL_CONNECTION=smtp | ||
30 | SMTP_PORT=2525 | ||
31 | SMTP_HOST=127.0.0.1 | ||
32 | MAIL_USERNAME=username | ||
33 | MAIL_PASSWORD=password | ||
34 | MAIL_SENDER=noreply@getferdi.com | ||
35 | MAIL_SSL=false | ||
diff --git a/docker/root/etc/cont-init.d/10-adduser b/docker/root/etc/cont-init.d/10-adduser deleted file mode 100755 index 8ba1aea..0000000 --- a/docker/root/etc/cont-init.d/10-adduser +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | #!/usr/bin/with-contenv bash | ||
2 | |||
3 | PUID=${PUID:-911} | ||
4 | PGID=${PGID:-911} | ||
5 | |||
6 | groupmod -o -g "$PGID" abc | ||
7 | usermod -o -u "$PUID" abc | ||
8 | |||
9 | echo ' | ||
10 | ------------------------------------- | ||
11 | ____ ___ | ||
12 | / __/__ _______/ (_) | ||
13 | / _// -_) __/ _ / / | ||
14 | _/_/ \__/_/ \_,_/_/ | ||
15 | / __/__ _____ _____ ____ | ||
16 | _\ \/ -_) __/ |/ / -_) __/ | ||
17 | /___/\__/_/ |___/\__/_/ | ||
18 | |||
19 | Brought to you by getferdi.com | ||
20 | Support our Open Collective at: | ||
21 | https://opencollective.com/getferdi/ | ||
22 | ------------------------------------- | ||
23 | GID/UID | ||
24 | -------------------------------------' | ||
25 | echo " | ||
26 | User uid: $(id -u abc) | ||
27 | User gid: $(id -g abc) | ||
28 | ------------------------------------- | ||
29 | " | ||
30 | chown abc:abc /app | ||
31 | chown abc:abc /config | ||
32 | chown abc:abc /defaults \ No newline at end of file | ||
diff --git a/docker/root/etc/cont-init.d/50-config b/docker/root/etc/cont-init.d/50-config deleted file mode 100755 index 72b2d00..0000000 --- a/docker/root/etc/cont-init.d/50-config +++ /dev/null | |||
@@ -1,174 +0,0 @@ | |||
1 | #!/usr/bin/with-contenv bash | ||
2 | |||
3 | # Display variables for troubleshooting | ||
4 | echo " " | ||
5 | echo "-------------------------------------" | ||
6 | echo " " | ||
7 | echo -e "Variables set:\\n\ | ||
8 | NODE_ENV=${NODE_ENV}\\n\ | ||
9 | EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}\\n\ | ||
10 | DB_CONNECTION=${DB_CONNECTION}\\n\ | ||
11 | DB_HOST=${DB_HOST}\\n\ | ||
12 | DB_PORT=${DB_PORT}\\n\ | ||
13 | DB_USER=${DB_USER}\\n\ | ||
14 | DB_PASSWORD=${DB_PASSWORD}\\n\ | ||
15 | DB_DATABASE=${DB_DATABASE}\\n\ | ||
16 | DB_SSL=${DB_SSL}\\n\ | ||
17 | IS_CREATION_ENABLED=${IS_CREATION_ENABLED}\\n\ | ||
18 | IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}\\n\ | ||
19 | IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}\\n\ | ||
20 | CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}\\n\ | ||
21 | MAIL_CONNECTION=${MAIL_CONNECTION}\\n\ | ||
22 | SMTP_PORT=${SMTP_PORT}\\n\ | ||
23 | SMTP_HOST=${SMTP_HOST}\\n\ | ||
24 | MAIL_SSL=${MAIL_SSL}\\n\ | ||
25 | MAIL_USERNAME=${MAIL_USERNAME}\\n\ | ||
26 | MAIL_PASSWORD=${MAIL_PASSWORD}\\n\ | ||
27 | MAIL_SENDER=${MAIL_SENDER}\\n" | ||
28 | |||
29 | # Echo init finish for test runs | ||
30 | if [ -n "${TEST_RUN}" ]; then | ||
31 | echo " " | ||
32 | echo '**** [services.d] done ****' | ||
33 | fi | ||
34 | |||
35 | # set ferdi-server status | ||
36 | echo " " | ||
37 | echo "**** Checking Ferdi-server settings ****" | ||
38 | if [ -f /config/config.txt ]; then | ||
39 | [[ "${NODE_ENV}" ]] && sed -i "s/NODE_ENV=.*/NODE_ENV=${NODE_ENV}/g" /config/config.txt | ||
40 | [[ "${EXTERNAL_DOMAIN}" ]] && sed -i "s/EXTERNAL_DOMAIN=.*/EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}/g" /config/config.txt | ||
41 | [[ "${IS_CREATION_ENABLED}" ]] && sed -i "s/IS_CREATION_ENABLED=.*/IS_CREATION_ENABLED=${IS_CREATION_ENABLED}/g" /config/config.txt | ||
42 | [[ "${IS_DASHBOARD_ENABLED}" ]] && sed -i "s/IS_DASHBOARD_ENABLED=.*/IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}/g" /config/config.txt | ||
43 | [[ "${IS_REGISTRATION_ENABLED}" ]] && sed -i "s/IS_REGISTRATION_ENABLED=.*/IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}/g" /config/config.txt | ||
44 | [[ "${CONNECT_WITH_FRANZ}" ]] && sed -i "s/CONNECT_WITH_FRANZ=.*/CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}/g" /config/config.txt | ||
45 | [[ "${DB_CONNECTION}" ]] && sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=${DB_CONNECTION}/g" /config/config.txt | ||
46 | [[ "${DB_HOST}" ]] && sed -i "s/DB_HOST=.*/DB_HOST=${DB_HOST}/g" /config/config.txt | ||
47 | [[ "${DB_PORT}" ]] && sed -i "s/DB_PORT=.*/DB_PORT=${DB_PORT}/g" /config/config.txt | ||
48 | [[ "${DB_DATABASE}" ]] && sed -i "s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/g" /config/config.txt | ||
49 | [[ "${DB_USER}" ]] && sed -i "s/DB_USER=.*/DB_USER=${DB_USER}/g" /config/config.txt | ||
50 | [[ "${DB_PASSWORD}" ]] && sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/g" /config/config.txt | ||
51 | [[ "${DB_SSL}" ]] && sed -i "s/DB_SSL=.*/DB_SSL=${DB_SSL}/g" /config/config.txt | ||
52 | [[ "${MAIL_CONNECTION}" ]] && sed -i "s/MAIL_CONNECTION=.*/MAIL_CONNECTION=${MAIL_CONNECTION}/g" /config/config.txt | ||
53 | [[ "${SMTP_HOST}" ]] && sed -i "s/SMTP_HOST=.*/SMTP_HOST=${SMTP_HOST}/g" /config/config.txt | ||
54 | [[ "${SMTP_PORT}" ]] && sed -i "s/SMTP_PORT=.*/SMTP_PORT=${SMTP_PORT}/g" /config/config.txt | ||
55 | [[ "${MAIL_SSL}" ]] && sed -i "s/MAIL_SSL=.*/MAIL_SSL=${MAIL_SSL}/g" /config/config.txt | ||
56 | [[ "${MAIL_USERNAME}" ]] && sed -i "s/MAIL_USERNAME=.*/MAIL_USERNAME=${MAIL_USERNAME}/g" /config/config.txt | ||
57 | [[ "${MAIL_PASSWORD}" ]] && sed -i "s/MAIL_PASSWORD=.*/MAIL_PASSWORD=${MAIL_PASSWORD}/g" /config/config.txt | ||
58 | [[ "${MMAIL_SENDER}" ]] && sed -i "s/MAIL_SENDER=.*/MAIL_SENDER=${MAIL_SENDER}/g" /config/config.txt | ||
59 | rm /config/.env | ||
60 | cp /config/config.txt /config/.env | ||
61 | elif [ ! -f /config/config.txt ]; then | ||
62 | echo " " | ||
63 | echo "**** Generating .env file ****" | ||
64 | cp /defaults/.env.example /config/.env | ||
65 | [[ "${NODE_ENV}" ]] && sed -i "s/NODE_ENV=.*/NODE_ENV=${NODE_ENV}/g" /config/.env | ||
66 | [[ "${EXTERNAL_DOMAIN}" ]] && sed -i "s/EXTERNAL_DOMAIN=.*/EXTERNAL_DOMAIN=${EXTERNAL_DOMAIN}/g" /config/.env | ||
67 | [[ "${IS_CREATION_ENABLED}" ]] && sed -i "s/IS_CREATION_ENABLED=.*/IS_CREATION_ENABLED=${IS_CREATION_ENABLED}/g" /config/.env | ||
68 | [[ "${IS_DASHBOARD_ENABLED}" ]] && sed -i "s/IS_DASHBOARD_ENABLED=.*/IS_DASHBOARD_ENABLED=${IS_DASHBOARD_ENABLED}/g" /config/.env | ||
69 | [[ "${IS_REGISTRATION_ENABLED}" ]] && sed -i "s/IS_REGISTRATION_ENABLED=.*/IS_REGISTRATION_ENABLED=${IS_REGISTRATION_ENABLED}/g" /config/.env | ||
70 | [[ "${CONNECT_WITH_FRANZ}" ]] && sed -i "s/CONNECT_WITH_FRANZ=.*/CONNECT_WITH_FRANZ=${CONNECT_WITH_FRANZ}/g" /config/.env | ||
71 | [[ "${DB_CONNECTION}" ]] && sed -i "s/DB_CONNECTION=.*/DB_CONNECTION=${DB_CONNECTION}/g" /config/.env | ||
72 | [[ "${DB_HOST}" ]] && sed -i "s/DB_HOST=.*/DB_HOST=${DB_HOST}/g" /config/.env | ||
73 | [[ "${DB_PORT}" ]] && sed -i "s/DB_PORT=.*/DB_PORT=${DB_PORT}/g" /config/.env | ||
74 | [[ "${DB_DATABASE}" ]] && sed -i "s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/g" /config/.env | ||
75 | [[ "${DB_USER}" ]] && sed -i "s/DB_USER=.*/DB_USER=${DB_USER}/g" /config/.env | ||
76 | [[ "${DB_PASSWORD}" ]] && sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/g" /config/.env | ||
77 | [[ "${DB_SSL}" ]] && sed -i "s/DB_SSL=.*/DB_SSL=${DB_SSL}/g" /config/.env | ||
78 | [[ "${MAIL_CONNECTION}" ]] && sed -i "s/MAIL_CONNECTION=.*/MAIL_CONNECTION=${MAIL_CONNECTION}/g" /config/.env | ||
79 | [[ "${SMTP_HOST}" ]] && sed -i "s/SMTP_HOST=.*/SMTP_HOST=${SMTP_HOST}/g" /config/.env | ||
80 | [[ "${SMTP_PORT}" ]] && sed -i "s/SMTP_PORT=.*/SMTP_PORT=${SMTP_PORT}/g" /config/.env | ||
81 | [[ "${MAIL_SSL}" ]] && sed -i "s/MAIL_SSL=.*/MAIL_SSL=${MAIL_SSL}/g" /config/.env | ||
82 | [[ "${MAIL_USERNAME}" ]] && sed -i "s/MAIL_USERNAME=.*/MAIL_USERNAME=${MAIL_USERNAME}/g" /config/.env | ||
83 | [[ "${MAIL_PASSWORD}" ]] && sed -i "s/MAIL_PASSWORD=.*/MAIL_PASSWORD=${MAIL_PASSWORD}/g" /config/.env | ||
84 | [[ "${MMAIL_SENDER}" ]] && sed -i "s/MAIL_SENDER=.*/MAIL_SENDER=${MAIL_SENDER}/g" /config/.env | ||
85 | cp /config/.env /config/config.txt | ||
86 | fi | ||
87 | |||
88 | # update .env | ||
89 | if [ -f /app/.env ]; then | ||
90 | rm /app/.env | ||
91 | ln -s /config/.env /app/.env | ||
92 | elif [ ! -f /app/.env ]; then | ||
93 | ln -s /config/.env /app/.env | ||
94 | fi | ||
95 | |||
96 | # install adonisjs cli | ||
97 | echo " " | ||
98 | echo "**** Installing AdonisJS and deps ****" | ||
99 | cd /app | ||
100 | echo " " | ||
101 | npm config set unsafe-perm true | ||
102 | npm i -g @adonisjs/cli | ||
103 | |||
104 | # install adonisjs dependencies | ||
105 | npm install | ||
106 | |||
107 | # make custom recipe dir | ||
108 | if [ ! -f /app/recipes/dev ]; then | ||
109 | mkdir -p /app/recipes/dev | ||
110 | fi | ||
111 | |||
112 | # setting the database helper | ||
113 | if [ "${DB_CONNECTION}" = "sqlite" ]; then | ||
114 | echo " " | ||
115 | echo "**** DB helper loaded ****" | ||
116 | else npm i ${DB_CONNECTION} | ||
117 | echo " " | ||
118 | echo "**** DB Helper loaded ****" | ||
119 | fi | ||
120 | |||
121 | # check for the database endpoint for 30 seconds | ||
122 | echo " " | ||
123 | echo "**** Checking DB endpoint ****" | ||
124 | source .env | ||
125 | END=$((SECONDS+30)) | ||
126 | while [ ${SECONDS} -lt ${END} ] && [ "${DB_HOST} ${DB_PORT}" ]; | ||
127 | do | ||
128 | /usr/bin/nc -z ${DB_HOST} ${DB_PORT} && \ | ||
129 | if [ ! -z "$(/usr/bin/nc -w1 ${DB_HOST} ${DB_PORT})" ]; | ||
130 | then | ||
131 | [ ! -z "${RUN}" ] && break | ||
132 | RUN="RAN" | ||
133 | # we sleep here again due to first run init on DB containers | ||
134 | [ ! -f /dbwait.lock ] && sleep 5 | ||
135 | else | ||
136 | sleep 1 | ||
137 | fi | ||
138 | sleep 1 | ||
139 | done | ||
140 | |||
141 | # source the .env file | ||
142 | source .env | ||
143 | |||
144 | # database migration | ||
145 | echo " " | ||
146 | echo "**** Run DB migration ****" | ||
147 | adonis migration:run --force | ||
148 | |||
149 | # Create APP key if needed | ||
150 | if [ ! -f "/config/FERDI_APP_KEY.txt" ]; | ||
151 | then | ||
152 | echo " " | ||
153 | echo "**** Generating Ferdi-server app key for first run ****" | ||
154 | adonis key:generate | ||
155 | source .env | ||
156 | echo $APP_KEY > /config/FERDI_APP_KEY.txt | ||
157 | echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****" | ||
158 | sed -i "s/APP_KEY=/APP_KEY=$APP_KEY/g" /config/config.txt | ||
159 | elif [ -f "/config/FERDI_APP_KEY.txt" ]; | ||
160 | then | ||
161 | echo " " | ||
162 | echo "**** App Key found ****" | ||
163 | APP_KEY=$(cat /config/FERDI_APP_KEY.txt) | ||
164 | sed -i "s/APP_KEY=.*/APP_KEY=$APP_KEY/g" /config/config.txt | ||
165 | echo "**** App Key set to $APP_KEY you can modify FERDI_APP_KEY.txt to update your key ****" | ||
166 | fi | ||
167 | |||
168 | # set permissions | ||
169 | chown -R abc:abc \ | ||
170 | /config \ | ||
171 | /app | ||
172 | |||
173 | # set lockfile to avoid DB waits for this specific container | ||
174 | touch /dbwait.lock | ||
diff --git a/docker/root/etc/services.d/ferdi-server/run b/docker/root/etc/services.d/ferdi-server/run deleted file mode 100755 index cf1568c..0000000 --- a/docker/root/etc/services.d/ferdi-server/run +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | #!/usr/bin/with-contenv bash | ||
2 | |||
3 | cd /app | ||
4 | |||
5 | setcap 'cap_net_bind_service=+ep' `which node` | ||
6 | |||
7 | # start server | ||
8 | echo " " | ||
9 | echo "**** Starting Ferdi-server ****" | ||
10 | exec s6-setuidgid abc adonis serve --dev \ No newline at end of file | ||