-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_dockerfile.py
More file actions
48 lines (39 loc) · 2.17 KB
/
generate_dockerfile.py
File metadata and controls
48 lines (39 loc) · 2.17 KB
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
# Importe le module json pour pouvoir lire et parser le fichier de configuration.
import json
# Ouvre le fichier de configuration 'config.json' en mode lecture ('r').
with open('config.json', 'r', encoding='utf-8') as f:
# Charge le contenu JSON du fichier dans un dictionnaire Python.
config = json.load(f)
# Ouvre le fichier 'dockerfile.template' en mode lecture.
with open('dockerfile.template', 'r', encoding='utf-8') as f:
# Lit tout le contenu du template dans une chaîne de caractères.
template = f.read()
# Remplace les placeholders (variables) dans le template par les valeurs du fichier de configuration.
# Remplace la version de PHP.
dockerfile_content = template.replace('%%PHP_VERSION%%', config['php_version'])
# Remplace la liste des outils système.
# Chaque élément est indenté de 4 espaces et se termine par un backslash (sauf le dernier).
system_tools = '\n'.join(f" {tool} \\" for tool in config['system_tools'])
# Retire le backslash du dernier élément
system_tools = system_tools.rstrip(' \\')
dockerfile_content = dockerfile_content.replace('%%SYSTEM_TOOLS%%', system_tools)
# Remplace la liste des extensions PHP (Core + PECL ensemble avec mlocati).
# Toutes les extensions sur une seule ligne séparées par des espaces
php_exts = ' '.join(config['php_extensions'])
dockerfile_content = dockerfile_content.replace('%%PHP_EXTENSIONS%%', php_exts)
# Crée le contenu du fichier php.ini avec les paramètres.
php_ini_lines = []
for key, value in config['php_ini_settings'].items():
# Format simple : key = value
if key == 'date.timezone':
php_ini_lines.append(f'{key} = "{value}"')
else:
php_ini_lines.append(f'{key} = {value}')
php_ini_content = '\n'.join(php_ini_lines) if php_ini_lines else ''
dockerfile_content = dockerfile_content.replace('%%PHP_INI_SETTINGS%%', php_ini_content)
# Ouvre (ou crée) le fichier 'dockerfile' en mode écriture ('w').
with open('dockerfile', 'w', encoding='utf-8') as f:
# Écrit le contenu final généré dans le fichier 'dockerfile'.
f.write(dockerfile_content)
# Affiche un message pour confirmer que le fichier a été généré.
print("dockerfile generated successfully from config.json")