forked from itk-dev/os2display-docker-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTaskfile.yml
179 lines (163 loc) · 7.35 KB
/
Taskfile.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
version: '3'
silent: true
tasks:
default:
desc: The default task that shows help
cmds:
- task --list
install:
desc: Install the project
deps:
- _dc_compile
cmds:
- task _show_preinstall_notes
- echo "Installing"
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml pull
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml up --force-recreate --detach --remove-orphans
- echo "Waiting for database to be ready"
- sleep 10
- echo "Initialize the database"
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec api bin/console doctrine:schema:create
- echo "Clearing the cache"
- task cc
- echo "Create jwt key pair"
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec --user 1000:1000 api bin/console lexik:jwt:generate-keypair --skip-if-exists
- task tenant_add
- echo "CREATE AN ADMIN USER. CHOOSE THE TENANT YOU JUST CREATED."
- task user_add
- task load_templates
- task _show_notes
reinstall:
desc: Reinstall from scratch. Removes the database, all containers, and volumes.
deps:
- down
cmds:
- task install
down:
desc: Remove all containers and volumes
deps:
- stop
cmds:
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml down -v
up:
desc: Take the environment up without altering the existing state of the containers
cmds:
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml up -d
stop:
desc: Stop all containers without altering anything else
cmds:
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml stop
tenant_add:
desc: Add a new tenant group
cmds:
- echo ""
- echo "Add a tenant"
- echo "===================================================="
- echo "A tenant is a group of users that share the same configuration. F. ex. IT, Library, Schools etc."
- echo "You have to provide tenant id, tenant title and optionally a description."
- echo "===================================================="
- echo ""
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec -T api bin/console app:tenant:add
user_add:
desc: Add a new user (editor or admin)
cmds:
- echo ""
- echo "Add a user"
- echo "===================================================="
- echo "You have to provide email, password, full name, role (editor or admin) and the tenant id."
- echo "===================================================="
- echo ""
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec -T api bin/console app:user:add
load_templates:
desc: Load templates and screen layouts
cmds:
- |
TEMPLATES_RELEASE=$(grep ^TASK_VERSION_TEMPLATES= .env.docker.local | cut -d '=' -f 2)
TEMPLATES=$(grep ^TASK_TEMPLATES= .env.docker.local | cut -d '=' -f 2 | tr -d ' "' | tr ',' ' ')
if [ -z "$TEMPLATES_RELEASE" ]; then
echo "Error: TASK_VERSION_TEMPLATES is not set in .env.docker.local"
exit 1
fi
if [ -z "$TEMPLATES" ]; then
echo "Error: TASK_TEMPLATES is not set or empty in .env.docker.local"
exit 1
fi
echo "Using TEMPLATES_RELEASE=$TEMPLATES_RELEASE"
echo "Using TEMPLATES=$TEMPLATES"
for TEMPLATE in $TEMPLATES; do
CONFIG_URL="https://raw.githubusercontent.com/os2display/display-templates/refs/tags/$TEMPLATES_RELEASE/build/$TEMPLATE-config-main.json"
echo "Loading template: $TEMPLATE"
docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec --user deploy api bin/console app:template:load -p $CONFIG_URL
done
SCREEN_LAYOUTS=$(grep ^TASK_SCREEN_LAYOUTS= .env.docker.local | cut -d '=' -f 2 | tr -d ' "' | tr ',' ' ')
if [ -z "$SCREEN_LAYOUTS" ]; then
echo "Error: TASK_SCREEN_LAYOUTS is not set or empty in .env.docker.local"
exit 1
fi
echo "Using SCREEN_LAYOUTS=$SCREEN_LAYOUTS"
for SCREEN_LAYOUT in $SCREEN_LAYOUTS; do
CONFIG_URL="https://raw.githubusercontent.com/os2display/display-templates/refs/tags/$TEMPLATES_RELEASE/src/screen-layouts/$SCREEN_LAYOUT.json"
echo "Loading screen layout: $SCREEN_LAYOUT"
docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec --user deploy api bin/console app:screen-layouts:load --update --cleanup-regions $CONFIG_URL
done
logs:
desc: Follow docker logs from the containers
cmds:
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml logs -f --tail=50
cc:
desc: Clear the cache
cmds:
- docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec api bin/console cache:clear
_show_preinstall_notes:
cmds:
- echo ""
- echo "===================================================="
- echo "Pre-installation Requirements"
- echo "===================================================="
- echo ""
- echo "To proceed with the installation, ensure the following steps are completed:"
- echo "1. Update '.env.docker.local' with your domain name (replace all 5 instances) and set secure passwords."
- echo "2. Place your SSL certificate files ('docker.crt' and 'docker.key') in the 'traefik/ssl' directory."
- echo ""
- echo "Have you completed the above pre-installation steps? (yes/no)"
- |
read answer && case $answer in
[Yy][Ee][Ss]) ;;
*) echo "Please complete the pre-install tasks before continuing."; exit 1;;
esac
_show_notes:
cmds:
- |
DOMAIN=$(grep ^COMPOSE_SERVER_DOMAIN= .env.docker.local | cut -d '=' -f 2)
echo ""
echo "===================================================="
echo "OS2display now is available via the URLs below"
echo "===================================================="
echo "Admin: https://$DOMAIN/admin"
echo "Screen: https://$DOMAIN/screen"
echo "===================================================="
_env_files:
cmds:
- |
if [ ! -f .env.local ]; then
echo ".env.local does not exist. Copying .env.example to .env.local..."
cp .env.example .env.local
fi
- |
if [ ! -f .env.docker.local ]; then
echo ".env.docker.local does not exist. Copying .env.docker.example to .env.docker.local..."
cp .env.docker.example .env.docker.local
fi
_dc_compile:
deps:
- _env_files
cmds:
- |
COMPOSE_FILES="-f docker-compose.server.yml"
if grep -q '^INTERNAL_DATABASE=true' .env.docker.local; then
COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.mariadb.yml"
fi
if grep -q '^INTERNAL_PROXY=true' .env.docker.local; then
COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.traefik.yml"
fi
docker compose --env-file .env.local --env-file .env.docker.local $COMPOSE_FILES config > docker-compose.yml