Imprimez les variables d'environnement définies lors de la commande docker run avec Python exécuté par le script shell dans le conteneur.
Au travail, je construis un système d'envoi de courrier planifié basé sur les informations du serveur SMTP transmises en fonction des variables d'environnement en Python en exécutant la commande docker run avec des variables d'environnement (informations du serveur SMTP, etc.) sur Amazon ECS. Variables d'environnement d'essai à la maison à cette fin.
PC:windows 10 home docker tool-box
$ docker version
Client:
Version: 19.03.1
API version: 1.40
Go version: go1.12.7
Git commit: 74b1e89e8a
Built: Wed Jul 31 15:18:18 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:28:45 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
$ docker run --env-file=env.txt -v /c/Users/.../environment_variable_test/code:/code -it python:3.6 bin/bash
root@82a5c3949b49:/#
Exécutez la commande docker run dans le répertoire env.txt. La variable d'environnement est définie dans --env-file = env.txt. Au fait, env.txt est
env.txt
AAA=asdfgg
BBB=bnmbnm
CCC=cvbnm
Il existe trois variables d'environnement: AAA, BBB et CCC. J'ai essayé de le séparer dans un autre fichier parce que c'était un gros problème. Les paramètres de la variable d'environnement pour l'exécution de docker sont détaillés ici ↓ https://qiita.com/KEINOS/items/518610bc2fdf5999acf2
Vous gagnez si vous affichez asdfgg, bnmbnm, cvbn en python.
-v / c / Users / ... / environment_variable_test / code: / code est un montage de répertoire. Le côté hôte et le répertoire dans le docker sont synchronisés.
Au fait, vérifiez que les variables d'environnement sont correctement écrites Référence: https://www.kabegiwablog.com/entry/2018/07/25/100000
root@82a5c3949b49:/# env | grep -e "AAA\|BBB\|CCC"
AAA=asdfgg
BBB=bnmbnm
CCC=cvbnm
root@82a5c3949b49:/#
Créez dans / c / Users / ... / environment_variable_test / code.
test.sh
#!/bin/sh
python test.py $AAA $BBB $CCC
echo "OK"
Si vous ne mettez pas #! / Bin / sh sur la première ligne, il ne sera pas reconnu comme .sh. Ajoutez également $ à la variable d'environnement Transmettez les variables d'environnement comme arguments à test.py.
echo "OK" affichera OK sur le shell. prime.
test.py
#!/usr/bin/env python
import sys
args = sys.argv
print("Premier argument:" + args[1])
print("Deuxième argument:" + args[2])
print("Troisième argument:" + args[3])
Cela ne reconnaît pas non plus comme .py sauf si vous mettez #! / Usr / bin / env python sur la première ligne. Voir ici pour le fonctionnement des arguments en Python ↓ https://qiita.com/orange_u/items/3f0fb6044fd5ee2c3a37
root@82a5c3949b49:/code# bash test.sh
Premier argument: asdfgg
Deuxième argument: bnmbnm
Troisième argument: cvbnm
OK
root@82a5c3949b49:/code#
Bien! D'ACCORD!
C'est dommage, mais si vous voyez #! / Bin / sh: Aucun fichier ou répertoire de ce type, vérifiez le code de caractère de chaque fichier.
test.sh: line 1: #!/bin/sh: No such file or directory
Premier argument: asdfgg
Deuxième argument: bnmbnm
Troisième argument: cvbnm
OK
En tant que débutant, je l'ai ouvert avec Notepad, corrigé le code du caractère et l'écrasé. Faux: UTF-8 (avec BOM) Correct: UTF-8
Je veux également le résumer dans le Dockerfile.
https://github.com/k-ashigaki/DockerStudyFile/tree/master/environment_variable_test