Browse Source

Dockerfiles

tags/v1.0.0
akimmig 4 years ago
parent
commit
134ba30044
8 changed files with 168 additions and 4 deletions
  1. +0
    -0
      docker/.env
  2. +2
    -0
      docker/.gitignore
  3. +6
    -0
      docker/build.sh
  4. +37
    -0
      docker/client/Dockerfile
  5. +35
    -4
      docker/docker-compose.yml
  6. +26
    -0
      docker/sample.env
  7. +29
    -0
      docker/server/Dockerfile
  8. +33
    -0
      docker/server/entry.sh

+ 0
- 0
docker/.env View File


+ 2
- 0
docker/.gitignore View File

@@ -0,0 +1,2 @@
.env
client/.npmrc

+ 6
- 0
docker/build.sh View File

@@ -0,0 +1,6 @@
#!/bin/sh

source .env

docker build -t sim-client:$VERSION --build-arg VERSION=$VERSION --build-arg GRAPHQL_SERVER=$GRAPHQL_SERVER client
docker build -t sim-server:$VERSION --build-arg VERSION=$VERSION server

+ 37
- 0
docker/client/Dockerfile View File

@@ -0,0 +1,37 @@
FROM nginx:1.21.1-alpine

ARG VERSION
ARG GRAPHQL_SERVER

ADD https://git.it-kimmig.de/akimmig/TurnenAufZeit/archive/v${VERSION}.zip /tmp.zip

RUN set -eux; \
unzip -q /tmp.zip -d /; \
rm -f /tmp.zip;

WORKDIR /turnenaufzeit/client

RUN apk update; \
apk add nodejs; \
apk add npm;

COPY ./.npmrc* /turnenaufzeit/client/

RUN if [[ -f "./.npmrc" ]]; then \
echo "OK" > /dev/null; \
else \
sed -i 's/fontawesome-pro/fontawesome-free/g' ./src/main.js; \
sed -i 's/fontawesome-pro/fontawesome-free/g' ./package.json; \
fi;

RUN echo "export const GRAPHQLserver = '${GRAPHQL_SERVER}'" > ./src/env.js

RUN npm install; \
npm run build;

RUN sed -i 's#root /usr/share/nginx/html;#root /turnenaufzeit/client/dist;#g' /etc/nginx/conf.d/default.conf; \
sed -i 's#index index.html index.htm;#try_files $uri $uri/ /index.html;#g' /etc/nginx/conf.d/default.conf;

EXPOSE 80

#CMD [ "nginx", "-g", "daemon off;" ]

+ 35
- 4
docker/docker-compose.yml View File

@@ -1,11 +1,42 @@
version: '3.1'
version: '3.6'

services:
mongo:
image: mongo
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: TurnenAufZeit
MONGO_INITDB_ROOT_USERNAME: ${DB_USER:-root}
MONGO_INITDB_ROOT_PASSWORD: ${DB_PWD:-TurnenAufZeit}

server:
image: sim-server:${VERSION}
ports:
- "3000:${SERVER_PORT:-3000}"
environment:
SYSTEM_NAME: ${SYSTEM_NAME:-TurnenAufZeit}
DB_USER: ${DB_USER:-root}
DB_PWD: ${DB_PWD:-TurnenAufZeit}
DB_HOST: ${DB_HOST:-mongo}
DB_PORT: ${DB_PORT:-27017}
DB_SOURCE: ${DB_SOURCE:-admin}
DB_DB: ${DB_DB:-TurnenAufZeit}
MAIL_HOST: ${MAIL_HOST:-}
MAIL_PORT: ${MAIL_PORT:-25}
MAIL_SECURE: ${MAIL_SECURE:-false}
MAIL_USER: ${MAIL_USER:-}
MAIL_PWD: ${MAIL_PWD:-}
MAIL_ADDRESS: ${MAIL_ADDRESS:-}
MAIL_NAME: ${MAIL_NAME:-}
SERVER_PORT: ${SERVER_PORT:-3000}
SERVER_LISTEN: ${SERVER_LISTEN:-0.0.0.0}
SERVER_HOST: ${SERVER_HOST:-http://localhost:8080}
ADMIN_MAIL: ${ADMIN_MAIL:-}
depends_on:
- mongo

client:
image: sim-client:${VERSION}
ports:
- 127.0.0.1:27017:27017
- 80:80
depends_on:
- server

+ 26
- 0
docker/sample.env View File

@@ -0,0 +1,26 @@
VERSION=0.9.1

SYSTEM_NAME='Turnen Auf Zeit'

#DB_USER='root'
#DB_PWD='TurnenAufZeit'
#DB_HOST='mongo'
#DB_PORT=27017
#DB_SOURCE='admin'
#DB_DB='TurnenAufZeit'

MAIL_HOST=''
MAIL_PORT=25
MAIL_SECURE=false
MAIL_USER=''
MAIL_PWD=''
MAIL_ADDRESS=''
MAIL_NAME=''

#SERVER_PORT=3000
#SERVER_LISTEN='0.0.0.0'
#SERVER_HOST='http://localhost:8080'

GRAPHQL_SERVER='ws://localhost:3000/graphql'

ADMIN_MAIL=''

+ 29
- 0
docker/server/Dockerfile View File

@@ -0,0 +1,29 @@
FROM node:14.17.5-alpine3.14

ARG VERSION

ADD https://git.it-kimmig.de/akimmig/TurnenAufZeit/archive/v${VERSION}.zip /tmp.zip

RUN set -eux; \
unzip -q /tmp.zip -d /; \
rm -f /tmp.zip;

WORKDIR /turnenaufzeit/server

RUN npm install;

RUN apk update; \
apk add openssh-keygen; \
apk add openssl; \
mkdir -p assets/keys; \
cd assets/keys; \
ssh-keygen -t rsa -b 4096 -f ./jwt.key -m pem; \
openssl rsa -in ./jwt.key -pubout -out ./jwt.key.pub;

EXPOSE 3000

ADD ./entry.sh /

ENTRYPOINT [ "/bin/sh", "/entry.sh" ]

CMD npm run start

+ 33
- 0
docker/server/entry.sh View File

@@ -0,0 +1,33 @@
#!/bin/sh

cd /turnenaufzeit/server

echo "export const SYSTEMname = '$SYSTEM_NAME';" > src/env.ts

echo "export const DBuser = '$DB_USER';" >> src/env.ts
echo "export const DBpwd = '$DB_PWD';" >> src/env.ts
echo "export const DBhost = '$DB_HOST';" >> src/env.ts
echo "export const DBport = $DB_PORT;" >> src/env.ts
echo "export const DBsource = '$DB_SOURCE';" >> src/env.ts
echo "export const DBdb = '$DB_DB';" >> src/env.ts

echo "export const MAILhost = '$MAIL_HOST';" >> src/env.ts
echo "export const MAILport = $MAIL_PORT;" >> src/env.ts
echo "export const MAILsecure = $MAIL_SECURE;" >> src/env.ts
echo "export const MAILuser = '$MAIL_USER';" >> src/env.ts
echo "export const MAILpwd = '$MAIL_PWD';" >> src/env.ts
echo "export const MAILaddress = '$MAIL_ADDRESS';" >> src/env.ts
echo "export const MAILname = '$MAIL_NAME';" >> src/env.ts

echo "export const SERVERport = $SERVER_PORT;" >> src/env.ts
echo "export const SERVERlisten = '$SERVER_LISTEN';" >> src/env.ts
echo "export const SERVERhost = '$SERVER_HOST';" >> src/env.ts

echo "export const ADMINmail = '$ADMIN_MAIL';" >> src/env.ts

if [ "$MAIL_HOST" = "" ] || [ "$MAIL_HOST" = "nomail" ]; then
echo "no mail specified! exiting..."
exit
fi

exec "$@"

Loading…
Cancel
Save