Drucken Sie die Umgebungsvariablen, die während des Docker-Ausführungsbefehls festgelegt wurden, mit Python, das vom Shell-Skript im Container ausgeführt wird.
Bei der Arbeit erstelle ich ein geplantes Mail-Sendesystem basierend auf den SMTP-Serverinformationen, die basierend auf den Umgebungsvariablen in Python übergeben wurden, indem ich den Docker-Befehl run mit Umgebungsvariablen (SMTP-Serverinformationen usw.) auf Amazon ECS ausführe. Testen Sie die Umgebungsvariablen zu Hause für diesen Zweck.
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:/#
Führen Sie den Docker-Befehl run im Verzeichnis env.txt aus. Die Umgebungsvariable wird in --env-file = env.txt festgelegt. Env.txt ist übrigens
env.txt
AAA=asdfgg
BBB=bnmbnm
CCC=cvbnm
Es gibt drei Umgebungsvariablen: AAA, BBB und CCC. Ich habe versucht, es in eine andere Datei zu trennen, weil es eine große Sache war. Die Einstellungen der Umgebungsvariablen für den Docker-Lauf finden Sie hier ↓ https://qiita.com/KEINOS/items/518610bc2fdf5999acf2
Sie gewinnen, wenn Sie asdfgg, bnmbnm, cvbn in Python anzeigen.
-v / c / Users / ... / Umgebungsvariable_test / code: / code ist ein Verzeichnis-Mount. Die Hostseite und das Verzeichnis im Docker sind synchronisiert.
Überprüfen Sie übrigens, ob die Umgebungsvariablen richtig geschrieben sind Referenz: 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:/#
Erstellen Sie in / c / Users / ... / environment_variable_test / code.
test.sh
#!/bin/sh
python test.py $AAA $BBB $CCC
echo "OK"
Wenn Sie #! / Bin / sh nicht in die erste Zeile setzen, wird es nicht als .sh erkannt. Fügen Sie außerdem $ zur Umgebungsvariablen hinzu Übergeben Sie Umgebungsvariablen als Argumente an test.py.
Das Echo "OK" zeigt OK in der Shell an. Bonus.
test.py
#!/usr/bin/env python
import sys
args = sys.argv
print("Erstes Argument:" + args[1])
print("Zweites Argument:" + args[2])
print("Drittes Argument:" + args[3])
Dies wird auch nicht als .py erkannt, es sei denn, Sie setzen #! / Usr / bin / env python in die erste Zeile. Hier finden Sie Informationen zur Funktionsweise von Argumenten in Python ↓ https://qiita.com/orange_u/items/3f0fb6044fd5ee2c3a37
root@82a5c3949b49:/code# bash test.sh
Erstes Argument: asdfgg
Zweites Argument: bnmbnm
Drittes Argument: cvbnm
OK
root@82a5c3949b49:/code#
In Ordung! OK!
Es ist eine Schande, aber wenn Sie #! / Bin / sh sehen: Keine solche Datei oder kein solches Verzeichnis, überprüfen Sie den Zeichencode jeder Datei.
test.sh: line 1: #!/bin/sh: No such file or directory
Erstes Argument: asdfgg
Zweites Argument: bnmbnm
Drittes Argument: cvbnm
OK
Als Anfänger habe ich es mit Notepad geöffnet, den Zeichencode korrigiert und überschrieben. Falsch: UTF-8 (mit Stückliste) Richtig: UTF-8
Ich möchte es auch in der Docker-Datei zusammenfassen.
https://github.com/k-ashigaki/DockerStudyFile/tree/master/environment_variable_test
Recommended Posts