Skip to content

Commit bb0ac65

Browse files
committed
initial commit
0 parents  commit bb0ac65

8 files changed

+433
-0
lines changed

Dockerfile

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM jeedom/jeedom:4.4-http-bookworm
2+
3+
COPY root/init-wrapper.sh /root/init-wrapper.sh
4+
RUN ls -la /root
5+
RUN chmod +x /root/init-wrapper.sh
6+
7+
COPY init-scripts/ /init-scripts/
8+
RUN chmod +x /init-scripts/*.sh
9+
10+
ENTRYPOINT ["/root/init-wrapper.sh"]

Makefile

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Utilisation :
2+
# make up CONTAINER_PREFIX=prefix
3+
# make down CONTAINER_PREFIX=prefix
4+
# make pull CONTAINER_PREFIX=prefix
5+
# make restart CONTAINER_PREFIX=prefix
6+
# make rename-containers CONTAINER_PREFIX=prefix
7+
8+
CONTAINER_PREFIX ?=jeedom
9+
PORT ?=52080
10+
MYSQL_PASSWORD ?=jeedompass
11+
12+
DOCKER_COMPOSE_FILE=docker-compose.yml
13+
14+
rename-containers:
15+
@if [ -z "$(MYSQL_PASSWORD)" ]; then \
16+
MYSQL_PASSWORD=$$(openssl rand -base64 16 | tr -dc 'A-Za-z0-9' | head -c 16); \
17+
printf '\033[1;32mMot de passe MySQL généré : $$MYSQL_PASSWORD\033[0m\n'; \
18+
else \
19+
MYSQL_PASSWORD=$(MYSQL_PASSWORD); \
20+
fi; \
21+
echo "MYSQL_PASSWORD=$$MYSQL_PASSWORD" > .env; \
22+
echo "SERVICE_HTTP=$(CONTAINER_PREFIX)_jeedom_http" >> .env; \
23+
sed -i.bak \
24+
-e 's/jeedom_db/$(CONTAINER_PREFIX)_jeedom_db/g' \
25+
-e 's/jeedom_http/$(CONTAINER_PREFIX)_jeedom_http/g' \
26+
-e 's/v_jeedom_db/v_$(CONTAINER_PREFIX)_jeedom_db/g' \
27+
-e 's/v_jeedom_http/v_$(CONTAINER_PREFIX)_jeedom_http/g' \
28+
-e 's/\([ ]*\)- [0-9]*:80/\1- $(PORT):80/' \
29+
$(DOCKER_COMPOSE_FILE)
30+
31+
up:
32+
docker compose -f $(DOCKER_COMPOSE_FILE) up -d
33+
34+
down:
35+
docker compose -f $(DOCKER_COMPOSE_FILE) down -v
36+
37+
pull:
38+
docker compose -f $(DOCKER_COMPOSE_FILE) pull
39+
40+
stop:
41+
docker compose -f $(DOCKER_COMPOSE_FILE) stop
42+
43+
restart:
44+
docker compose -f $(DOCKER_COMPOSE_FILE) restart
45+
46+
logs:
47+
docker compose -f $(DOCKER_COMPOSE_FILE) logs -f
48+
49+
update:
50+
docker compose -f $(DOCKER_COMPOSE_FILE) pull
51+
docker compose -f $(DOCKER_COMPOSE_FILE) up -d
52+
53+
exec:
54+
@if [ -z "$(SERVICE)" ]; then \
55+
if [ -f .env ] && grep -q SERVICE_HTTP= .env; then \
56+
SERVICE=$$(grep SERVICE_HTTP .env | cut -d= -f2); \
57+
else \
58+
SERVICE=jeedom_http; \
59+
fi; \
60+
else \
61+
SERVICE=$(SERVICE); \
62+
fi; \
63+
if [ -z "$(CMD)" ]; then \
64+
echo "Usage : make exec [SERVICE=nom_du_service] CMD=commande"; \
65+
exit 1; \
66+
else \
67+
docker compose -f $(DOCKER_COMPOSE_FILE) exec $$SERVICE $(CMD); \
68+
fi
69+
70+
shell:
71+
@if [ -z "$(SERVICE)" ]; then \
72+
if [ -f .env ] && grep -q SERVICE_HTTP= .env; then \
73+
SERVICE=$$(grep SERVICE_HTTP .env | cut -d= -f2); \
74+
else \
75+
SERVICE=jeedom_http; \
76+
fi; \
77+
else \
78+
SERVICE=$(SERVICE); \
79+
fi; \
80+
if docker compose -f $(DOCKER_COMPOSE_FILE) exec $$SERVICE bash 2>/dev/null; then :; \
81+
else docker compose -f $(DOCKER_COMPOSE_FILE) exec $$SERVICE sh; fi
82+
83+
status:
84+
docker compose -f $(DOCKER_COMPOSE_FILE) ps
85+
86+

README.md

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Documentation d’utilisation
2+
3+
## 1. Préparation de l’environnement
4+
5+
1. **Cloner ce dépôt** (si ce n’est pas déjà fait) :
6+
```sh
7+
git clone <url-du-repo> && cd developper-module
8+
```
9+
10+
2. **Cloner le plugin en développement** dans le dossier `plugins` :
11+
```sh
12+
cd plugins
13+
git clone <url-du-plugin>
14+
cd ..
15+
```
16+
17+
## 2. Gestion des conteneurs Docker
18+
19+
Toutes les commandes suivantes se lancent depuis la racine du projet (`developper-module`).
20+
21+
- **Renommer les conteneurs et volumes** (optionnel, pour personnaliser le préfixe) :
22+
```sh
23+
make rename-containers CONTAINER_PREFIX=template PORT=53000 MYSQL_PASSWORD=monmotdepasse
24+
```
25+
26+
- **Démarrer l’environnement** :
27+
```sh
28+
make up
29+
```
30+
31+
- **Arrêter l’environnement** :
32+
```sh
33+
make down
34+
```
35+
36+
- **Arrêter les conteneurs sans les supprimer** :
37+
```sh
38+
make stop
39+
```
40+
41+
- **Mettre à jour les images et relancer** :
42+
```sh
43+
make update
44+
```
45+
46+
- **Afficher les logs** :
47+
```sh
48+
make logs
49+
```
50+
51+
- **Ouvrir un shell dans un conteneur** (par défaut dans jeedom_http) :
52+
```sh
53+
make shell
54+
# ou dans un autre service :
55+
make shell SERVICE=jeedom_db
56+
```
57+
58+
- **Exécuter une commande dans un conteneur** :
59+
```sh
60+
make exec SERVICE=jeedom_http CMD="ls -l /var/www/html"
61+
```
62+
63+
- **Ouvrir un shell dans le conteneur HTTP automatiquement** :
64+
```sh
65+
make shell
66+
```
67+
(le Makefile utilise automatiquement le bon nom de conteneur grâce à la variable SERVICE_HTTP du .env)
68+
69+
- **Exécuter une commande dans le conteneur HTTP automatiquement** :
70+
```sh
71+
make exec CMD="ls -l /var/www/html"
72+
```
73+
(inutile de préciser SERVICE, le Makefile le détecte automatiquement)
74+
75+
- **Utiliser automatiquement le nom du conteneur HTTP** :
76+
Pour exécuter une commande ou ouvrir un shell dans le conteneur HTTP sans avoir à connaître son nom, tu peux utiliser la variable SERVICE_HTTP générée dans le fichier `.env` :
77+
```sh
78+
make shell SERVICE=$(shell grep SERVICE_HTTP .env | cut -d= -f2)
79+
# ou pour exécuter une commande :
80+
make exec SERVICE=$(shell grep SERVICE_HTTP .env | cut -d= -f2) CMD="ls -l /var/www/html"
81+
```
82+
Cette variable est automatiquement mise à jour à chaque `make rename-containers` selon le préfixe choisi.
83+
84+
## 3. Variables utiles
85+
86+
- `CONTAINER_PREFIX` : permet de personnaliser le nom des conteneurs et volumes (par défaut : jeedom).
87+
88+
## 4. Configuration du mot de passe MySQL
89+
90+
Lors de l'exécution de la commande `make rename-containers`, le mot de passe MySQL utilisé dans le fichier `docker-compose.yml` peut être défini de plusieurs façons :
91+
92+
- **Définir manuellement le mot de passe** :
93+
```sh
94+
make rename-containers MYSQL_PASSWORD=tonmotdepasse
95+
```
96+
- **Laisser le Makefile générer un mot de passe sécurisé aléatoire** :
97+
Si tu ne précises pas la variable `MYSQL_PASSWORD`, un mot de passe fort sera généré automatiquement et affiché dans le terminal.
98+
99+
Ce mot de passe sera utilisé pour :
100+
- `MYSQL_ROOT_PASSWORD` (service MariaDB)
101+
- `MYSQL_PASSWORD` (service MariaDB)
102+
- `DB_PASSWORD` (service Jeedom)
103+
104+
Pense à le conserver si tu veux te connecter à la base de données manuellement.
105+
106+
---
107+
108+
Pour toute question ou contribution, n’hésite pas à ouvrir une issue ou une pull request.

docker-compose copy.yml

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
services:
2+
jeedom_db:
3+
image: mariadb:latest
4+
container_name: jeedom_db
5+
command:
6+
- "--default-authentication-plugin=mysql_native_password"
7+
- "--skip-name-resolve"
8+
- "--key_buffer_size=16M"
9+
- "--thread_cache_size=16"
10+
- "--tmp_table_size=48M"
11+
- "--max_heap_table_size=48M"
12+
- "--query_cache_type=1"
13+
- "--query_cache_size=32M"
14+
- "--query_cache_limit=2M"
15+
- "--query_cache_min_res_unit=3K"
16+
- "--innodb_flush_method=O_DIRECT"
17+
- "--innodb_flush_log_at_trx_commit=2"
18+
- "--innodb_log_file_size=32M"
19+
- "--innodb_large_prefix=on"
20+
- "--connect_timeout=600"
21+
- "--wait_timeout=600"
22+
- "--interactive_timeout=600"
23+
volumes:
24+
- v_jeedom_db:/var/lib/mysql
25+
restart: always
26+
environment:
27+
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
28+
- MYSQL_DATABASE=jeedom
29+
- MYSQL_USER=jeedom
30+
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
31+
expose:
32+
- 3306
33+
jeedom_http:
34+
image: jeedom/jeedom:4.4-http-bookworm
35+
container_name: jeedom_http
36+
volumes:
37+
- v_jeedom_http:/var/www/html
38+
tmpfs:
39+
- /tmp/jeedom
40+
ports:
41+
- 52080:80
42+
restart: always
43+
environment:
44+
- DB_HOST=jeedom_db
45+
- DB_USERNAME=jeedom
46+
- DB_PASSWORD=${MYSQL_PASSWORD}
47+
- DB_NAME=jeedom
48+
healthcheck:
49+
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:80"]
50+
interval: 30s
51+
timeout: 10s
52+
retries: 5
53+
depends_on:
54+
- jeedom_db
55+
volumes:
56+
v_jeedom_db:
57+
v_jeedom_http:

docker-compose.yml

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
services:
2+
ondilo_jeedom_db:
3+
image: mariadb:latest
4+
container_name: ondilo_jeedom_db
5+
command:
6+
- "--default-authentication-plugin=mysql_native_password"
7+
- "--skip-name-resolve"
8+
- "--key_buffer_size=16M"
9+
- "--thread_cache_size=16"
10+
- "--tmp_table_size=48M"
11+
- "--max_heap_table_size=48M"
12+
- "--query_cache_type=1"
13+
- "--query_cache_size=32M"
14+
- "--query_cache_limit=2M"
15+
- "--query_cache_min_res_unit=3K"
16+
- "--innodb_flush_method=O_DIRECT"
17+
- "--innodb_flush_log_at_trx_commit=2"
18+
- "--innodb_log_file_size=32M"
19+
- "--innodb_large_prefix=on"
20+
- "--connect_timeout=600"
21+
- "--wait_timeout=600"
22+
- "--interactive_timeout=600"
23+
volumes:
24+
- v_ondilo_jeedom_db:/var/lib/mysql
25+
- ./plugins:/plugins-src
26+
restart: always
27+
environment:
28+
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
29+
- MYSQL_DATABASE=jeedom
30+
- MYSQL_USER=jeedom
31+
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
32+
expose:
33+
- 3306
34+
ondilo_jeedom_http:
35+
build: .
36+
container_name: ondilo_jeedom_http
37+
volumes:
38+
- v_ondilo_jeedom_http:/var/www/html
39+
tmpfs:
40+
- /tmp/jeedom
41+
ports:
42+
- 53000:80
43+
restart: always
44+
environment:
45+
- DB_HOST=ondilo_jeedom_db
46+
- DB_USERNAME=jeedom
47+
- DB_PASSWORD=${MYSQL_PASSWORD}
48+
- DB_NAME=jeedom
49+
healthcheck:
50+
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:80"]
51+
interval: 30s
52+
timeout: 10s
53+
retries: 5
54+
depends_on:
55+
- ondilo_jeedom_db
56+
volumes:
57+
v_ondilo_jeedom_db:
58+
v_ondilo_jeedom_http:

docker-compose.yml.bak

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
services:
2+
jeedom_db:
3+
image: mariadb:latest
4+
container_name: jeedom_db
5+
command:
6+
- "--default-authentication-plugin=mysql_native_password"
7+
- "--skip-name-resolve"
8+
- "--key_buffer_size=16M"
9+
- "--thread_cache_size=16"
10+
- "--tmp_table_size=48M"
11+
- "--max_heap_table_size=48M"
12+
- "--query_cache_type=1"
13+
- "--query_cache_size=32M"
14+
- "--query_cache_limit=2M"
15+
- "--query_cache_min_res_unit=3K"
16+
- "--innodb_flush_method=O_DIRECT"
17+
- "--innodb_flush_log_at_trx_commit=2"
18+
- "--innodb_log_file_size=32M"
19+
- "--innodb_large_prefix=on"
20+
- "--connect_timeout=600"
21+
- "--wait_timeout=600"
22+
- "--interactive_timeout=600"
23+
volumes:
24+
- v_jeedom_db:/var/lib/mysql
25+
restart: always
26+
environment:
27+
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
28+
- MYSQL_DATABASE=jeedom
29+
- MYSQL_USER=jeedom
30+
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
31+
expose:
32+
- 3306
33+
jeedom_http:
34+
image: jeedom/jeedom:4.4-http-bookworm
35+
container_name: jeedom_http
36+
volumes:
37+
- v_jeedom_http:/var/www/html
38+
- type: bind
39+
source: ./plugins
40+
target: /var/www/html/plugins
41+
- type: bind
42+
source: ./init-scripts
43+
target: /init-scripts
44+
entrypoint: ["/init-scripts/entrypoint.sh"]
45+
tmpfs:
46+
- /tmp/jeedom
47+
ports:
48+
- 52080:80
49+
restart: always
50+
environment:
51+
- DB_HOST=jeedom_db
52+
- DB_USERNAME=jeedom
53+
- DB_PASSWORD=${MYSQL_PASSWORD}
54+
- DB_NAME=jeedom
55+
healthcheck:
56+
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:80"]
57+
interval: 30s
58+
timeout: 10s
59+
retries: 5
60+
depends_on:
61+
- jeedom_db
62+
volumes:
63+
v_jeedom_db:
64+
v_jeedom_http:

0 commit comments

Comments
 (0)