Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.

Ziel

Drucken Sie die Umgebungsvariablen, die während des Docker-Ausführungsbefehls festgelegt wurden, mit Python, das vom Shell-Skript im Container ausgeführt wird.

Annahme

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.

Umgebung

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

Richten Sie vorerst einen Python-Container ein

$ 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 Shell-Skripte und Python-Dateien

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 image.png

Ausblick

Ich möchte es auch in der Docker-Datei zusammenfassen.

Ich habe es auf den Code gepostet, den GitHub dieses Mal verwendet hat (Copype ist schneller, aber w)

https://github.com/k-ashigaki/DockerStudyFile/tree/master/environment_variable_test

Recommended Posts

Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Installieren Sie CaboCha in der Ubuntu-Umgebung und rufen Sie es mit Python auf.
Ich habe versucht, das Offline-Spracherkennungssystem Julius mit Python in der virtuellen Docker-Umgebung auszuführen
Setzen Sie Ubuntu in Raspi ein, setzen Sie Docker darauf und steuern Sie GPIO mit Python aus dem Container
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Mit Docker durchgeführte Umgebungswartung (Ich möchte GrADS in Python nachbearbeiten
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
Beachten Sie, dass ich den Algorithmus der kleinsten Quadrate verstehe. Und ich habe es in Python geschrieben.
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Bereiten Sie die Python3-Umgebung mit Docker vor
Ich habe die Referenzgeschwindigkeit überprüft, wenn ich Python-Liste, Wörterbuch und Set-Typ verwendet habe.
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
[Python] Ich habe das Spiel von pip installiert und versucht zu spielen
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
Ich habe python3.4 in .envrc mit direnv geschrieben und es zugelassen, aber ich habe einen Syntaxfehler erhalten
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Ich mochte den Tweet mit Python. ..
Ich habe mit PyQt5 und Python3 gespielt
Ich habe die Warteschlange in Python geschrieben
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich habe den Stack in Python geschrieben
Ich habe die Python-Betriebsumgebung mit OSX Yosemite (pyenv + pip) eingestellt.
Lebensspiel mit Python [ich habe es geschafft] (auf Terminal & Tkinter)
Ich habe die Geschwindigkeit von Hash mit Topaz, Ruby und Python verglichen
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Erstellen und testen Sie mit Docker in wenigen Minuten eine OpenCV- und Python-Umgebung
[Python3] Speichern Sie die Mittelwert- und Kovarianzmatrix in json mit Pandas
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ist die Umgebung ohne Server mehr als 600 Mal langsamer? ~ Ich habe Benchmarking mit Go, Node.js und Python versucht! ~
Ich habe die Jumbo-Lotterie zum Jahresende mit Python gekauft und analysiert, die in Colaboratory ausgeführt werden kann
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Verwenden von venv in der Windows + Docker-Umgebung [Python]
Hinter dem Flyer: Docker mit Python verwenden
[Python] Ruft den Variablennamen mit str ab
Zeigen Sie Python 3 im Browser mit MAMP an
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Umgang mit "Jahren und Monaten" in Python
Ich habe Numba mit Python3.5 installiert und verwendet
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
Bereinigen Sie die Python-Umgebung mit Pythonz und virtualenv
Suchen Sie es in der Warteschlange und bearbeiten Sie es
Einführung von sip-4.14 in der Python3.2.2-Umgebung mit MacOS 10.7.4
Füllen Sie die Zeichenfolge mit Nullen in Python und zählen Sie bestimmte Zeichen aus der Zeichenfolge
Ich habe die numerische Berechnung von Python durch Rust ersetzt und die Geschwindigkeit verglichen
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
Ich wollte ein Jupyter-Notebook mit Docker in einer Pip-Umgebung (Opticspy) verwenden.
[Python] Süß Ist es süß? Über Suiten und Ausdrücke in offiziellen Dokumenten
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Schließen Sie das Cat-Ergebnis in doppelte Anführungszeichen ein und setzen Sie es in eine Variable
Ich habe den Akkord des Songs mit word2vec vektorisiert und mit t-SNE visualisiert
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python