main
alex 2023-11-02 20:54:48 +01:00
commit 82331e5bfe
9 changed files with 332 additions and 0 deletions

47
README.md Normal file
View File

@ -0,0 +1,47 @@
# Publishing new version
```
./delete-docker.sh
```
```
./build-docker.sh
```
```
./build-and-push.sh
```
# On the client side - fetch latest images
## remote-docker-compose.yml
Is the docker-compose.yml file that is used to deploy the application on a remote server.
### Remove the old images
```
docker image rm dockreg.ex.umbach.dev/jnx-admin-dashboard-server dockreg.ex.umbach.dev/jnx-admin-dashboard-proxy dockreg.ex.umbach.dev/jnx-log-manager-server
```
### Pull the new images
```
docker compose up
```
## Script used last time
delete.sh
```
docker compose down
docker image rm dockreg.ex.umbach.dev/jnx-admin-dashboard-server dockreg.ex.umbach.dev/jnx-admin-dashboard-proxy dockreg.ex.umbach.dev/jnx-log-manager-server
docker volume rm tet2_admin_dashboard_server_data tet2_log_manager_data
```
build.sh
```
docker compose up
```

17
build-all-dockers.sh Executable file
View File

@ -0,0 +1,17 @@
# only allow to run this script as root
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
original_dir=$(pwd)
###
# Robot-control-manager
###
cd "../robot-control-manager/"
./build-docker.sh
cd "$original_dir"

17
build-and-push.sh Executable file
View File

@ -0,0 +1,17 @@
#docker compose down
# rm images
docker image rm jnx-admin-dashboard-proxy
docker image rm jnx-admin-dashboard-server
# build images
docker compose build jnx-admin-dashboard-server
docker compose build jnx-admin-dashboard-proxy
# tag images
docker image tag jnx-admin-dashboard-server:latest dockreg.ex.umbach.dev/jnx-admin-dashboard-server:latest
docker image tag jnx-admin-dashboard-proxy:latest dockreg.ex.umbach.dev/jnx-admin-dashboard-proxy:latest
# push to self-hosted docker registry
docker push dockreg.ex.umbach.dev/jnx-admin-dashboard-server
docker push dockreg.ex.umbach.dev/jnx-admin-dashboard-proxy

22
build-docker.sh Executable file
View File

@ -0,0 +1,22 @@
ORANGE='\033[0;33m' # Orange
GREEN='\033[0;32m' # Green
NC='\033[0m' # No color (reseting)
# build backend go build
echo -e "${ORANGE}Starting go build${NC}"
cd ./admin-dashboard-backend
go build main.go
cd ..
echo -e "${GREEN}Go build finished${NC}"
# build static web build
echo -e "${ORANGE}Starting static web build${NC}"
cd ./admin-dashboard-web
npm run build
cd ..
echo -e "${GREEN}Static web build finished${NC}"
# create docker
#echo -e "${ORANGE}Starting docker creation${NC}"
#docker compose up

7
delete-docker.sh Executable file
View File

@ -0,0 +1,7 @@
#docker compose down
# rm images
docker image rm jnx-admin-dashboard-server dockreg.ex.umbach.dev/jnx-admin-dashboard-server jnx-admin-dashboard-proxy dockreg.ex.umbach.dev/jnx-admin-dashboard-proxy
#docker volume rm admin-dashboard_server_data
#docker volume rm admin-dashboard_server_data

95
docker-compose.yml Normal file
View File

@ -0,0 +1,95 @@
version: "3"
services:
jnx-admin-dashboard-server:
container_name: jnx-admin-dashboard-server
image: jnx-admin-dashboard-server:latest
build:
context: .
dockerfile: admin-dashboard-backend/Dockerfile
depends_on:
- mariadb
restart: always
volumes:
- admin_dashboard_server_data:/app
# CHANGE HERE - ONLY THE PATH ON YOUR SYSTEM: path_on_your_system:path_on_container
- ./admin-dashboard-data:/admin-dashboard-data
networks:
- jnx-admin-dashboard-network
environment:
- DOCKER=true
- DEBUG=true
- COLORIZED_OUTPUT=true
- HOST=0.0.0.0
- PORT=8080
- LOG_MANAGER_SERVER_URL=http://localhost:3000
- FOLDER_GROUPTASKS_GROUPS=/admin-dashboard-data/groupTasks/groups/
- FOLDER_GROUPTASKS_RUNNINGTASKS=/admin-dashboard-data/groupTasks/runningTasks/
- FOLDER_PUBLIC_STATIC=/admin-dashboard-data/public/
- LOG_LANGUAGE_GROUPTASKS=./grouptasks_lang_log_messages.json
- LOG_LANGUAGE_SYSTEM=./system_lang_log_messages.json
- MARIADB_HOSTNAME=mariadb
- MARIADB_PORT=3306
- MARIADB_USERNAME=admindashboard
- MARIADB_PASSWORD=QHXNcxuRRyAdxCxVCmPkEuCsPfCdfLz2
- MARIADB_DATABASE_NAME=jnxadmindashboard
- INVEX_API_BASE=https://XXXXXX # CHANGE HERE
- INVEX_API_TOKEN=XXXXXXXXXXX # CHANGE HERE
mariadb:
container_name: jnx-admin-dashboard-db
image: mariadb:latest
restart: always
networks:
- jnx-admin-dashboard-network
environment:
MYSQL_ROOT_PASSWORD: xvRxvq24XbaFKCiuTbfYmkh4UYdSXbcd
MYSQL_DATABASE: jnxadmindashboard
MYSQL_USER: admindashboard
MYSQL_PASSWORD: QHXNcxuRRyAdxCxVCmPkEuCsPfCdfLz2
volumes:
- db_data:/var/lib/mysql
jnx-admin-dashboard-proxy:
image: jnx-admin-dashboard-proxy:latest
restart: always
build:
context: .
dockerfile: nginx/Dockerfile
ports:
# CHANGE HOST/PORT IF NEEDED
#- "127.0.0.1:80:80"
- "80:80"
networks:
- jnx-admin-dashboard-network
depends_on:
- jnx-admin-dashboard-server
- jnx-log-manager-server
jnx-log-manager-server:
container_name: jnx-log-manager-server
image: jnx-log-manager-server:latest
restart: always
volumes:
- log_manager_data:/app
# CHANGE HERE - ONLY THE PATH ON YOUR SYSTEM: path_on_your_system:path_on_container
- ./log-manager-data:/log-manager-data
networks:
- jnx-admin-dashboard-network
environment:
- DOCKER=true
- DEBUG=true
- COLORIZED_OUTPUT=true
- HOST=0.0.0.0
- PORT=3000
- SSE_SERVER_ENABLED=true
- LOG_FOLDER=/log-manager-data/logs/
- DAYS_TO_KEEP_LOGS=30
volumes:
db_data:
admin_dashboard_server_data:
log_manager_data:
networks:
jnx-admin-dashboard-network:

5
nginx/Dockerfile Normal file
View File

@ -0,0 +1,5 @@
FROM nginx:latest
COPY ./admin-dashboard-web/build /usr/share/nginx/html
COPY ./nginx/nginx.conf /etc/nginx/conf.d/default.conf

33
nginx/nginx.conf Normal file
View File

@ -0,0 +1,33 @@
# nginx/nginx.conf
server {
listen 80;
location /api/ { # api server
client_max_body_size 0;
proxy_http_version 1.0;
proxy_pass http://jnx-admin-dashboard-server:8080/;
}
location /ws { # websocket server
proxy_read_timeout 10800s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_pass http://jnx-admin-dashboard-server:8080/ws/;
proxy_http_version 1.1;
}
location /lm/ { # log manager server
client_max_body_size 0;
proxy_http_version 1.0;
proxy_set_header Connection ""; # needed for sse
proxy_pass http://jnx-log-manager-server:3000/;
}
location / { # frontend
root /usr/share/nginx/html;
index index.html;
try_files $uri /index.html;
}
}

89
remote-docker-compose.yml Normal file
View File

@ -0,0 +1,89 @@
version: "3"
services:
jnx-admin-dashboard-server:
image: dockreg.ex.umbach.dev/jnx-admin-dashboard-server:latest
container_name: jnx-admin-dashboard-server
depends_on:
- mariadb
restart: always
volumes:
- admin_dashboard_server_data:/app
# CHANGE HERE - ONLY THE PATH ON YOUR SYSTEM: path_on_your_system:path_on_container
- ./admin-dashboard-data:/admin-dashboard-data
networks:
- jnx-admin-dashboard-network
environment:
- DOCKER=true
- DEBUG=false
- COLORIZED_OUTPUT=true
- HOST=0.0.0.0 # DO NOT CHANGE THIS
- PORT=8080 # DO NOT CHANGE THIS
- LOG_MANAGER_SERVER_URL=http://jnx-log-manager-server:3000
- FOLDER_GROUPTASKS_GROUPS=/admin-dashboard-data/groupTasks/groups/
- FOLDER_GROUPTASKS_RUNNINGTASKS=/admin-dashboard-data/groupTasks/runningTasks/
- FOLDER_PUBLIC_STATIC=/admin-dashboard-data/public/
- LOG_LANGUAGE_GROUPTASKS=./grouptasks_lang_log_messages.json
- LOG_LANGUAGE_SYSTEM=./system_lang_log_messages.json
- MARIADB_HOSTNAME=mariadb
- MARIADB_PORT=3306
- MARIADB_USERNAME=admindashboard
- MARIADB_PASSWORD=QHXNcxuRRyAdxCxVCmPkEuCsPfCdfLz2
- MARIADB_DATABASE_NAME=jnxadmindashboard
- INVEX_API_BASE=https://XXXXXX # CHANGE HERE
- INVEX_API_TOKEN=XXXXXXXXXXX # CHANGE HERE
mariadb:
container_name: jnx-admin-dashboard-db
image: mariadb:latest
restart: always
networks:
- jnx-admin-dashboard-network
environment:
MYSQL_ROOT_PASSWORD: xvRxvq24XbaFKCiuTbfYmkh4UYdSXbcd
MYSQL_DATABASE: jnxadmindashboard
MYSQL_USER: admindashboard
MYSQL_PASSWORD: QHXNcxuRRyAdxCxVCmPkEuCsPfCdfLz2
volumes:
- db_data:/var/lib/mysql
jnx-admin-dashboard-proxy:
image: dockreg.ex.umbach.dev/jnx-admin-dashboard-proxy:latest
restart: always
ports:
# CHANGE HOST/PORT IF NEEDED
#- "127.0.0.1:80:80"
- "80:80"
networks:
- jnx-admin-dashboard-network
depends_on:
- jnx-admin-dashboard-server
- jnx-log-manager-server
jnx-log-manager-server:
container_name: jnx-log-manager-server
image: dockreg.ex.umbach.dev/jnx-log-manager-server:latest
restart: always
volumes:
- log_manager_data:/app
# CHANGE HERE - ONLY THE PATH ON YOUR SYSTEM: path_on_your_system:path_on_container
- ./log-manager-data:/log-manager-data
networks:
- jnx-admin-dashboard-network
environment:
- DOCKER=true
- DEBUG=false
- COLORIZED_OUTPUT=true
- HOST=0.0.0.0
- PORT=3000
- SSE_SERVER_ENABLED=true
- LOG_FOLDER=/log-manager-data/
- DAYS_TO_KEEP_LOGS=30
volumes:
db_data:
admin_dashboard_server_data:
log_manager_data:
networks:
jnx-admin-dashboard-network: