J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.

Cible

Imprimez les variables d'environnement définies lors de la commande docker run avec Python exécuté par le script shell dans le conteneur.

supposition

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.

environnement

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

Configurer un conteneur Python pour le moment

$ 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éer des scripts shell et des fichiers Python

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

Perspective

Je veux également le résumer dans le Dockerfile.

Je l'ai posté sur le code GitHub que j'ai utilisé cette fois (le copype est plus rapide, mais w)

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

Recommended Posts

J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Installez CaboCha dans l'environnement Ubuntu et appelez-le avec Python.
J'ai essayé d'exécuter le système de reconnaissance vocale hors ligne Julius avec python dans l'environnement virtuel Docker
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Préparer l'environnement d'exécution de Python3 avec Docker
Maintenance de l'environnement réalisée avec Docker (je souhaite post-traiter GrADS en Python
J'ai installé Pygame avec Python 3.5.1 dans l'environnement de pyenv sur OS X
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Préparer l'environnement python3 avec Docker
J'ai vérifié la vitesse de référence lors de l'utilisation de la liste python, du dictionnaire et du type de jeu.
Je veux remplacer les variables dans le fichier de modèle python et le produire en masse dans un autre fichier
Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
[Python] J'ai installé le jeu depuis pip et j'ai essayé de jouer
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai écrit python3.4 dans .envrc avec direnv et je l'ai autorisé, mais j'ai eu une erreur de syntaxe
Construire un environnement Mysql + Python avec docker
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
J'ai aimé le tweet avec python. ..
J'ai joué avec PyQt5 et Python3
J'ai écrit la file d'attente en Python
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai écrit la pile en Python
J'ai défini l'environnement d'exploitation python avec OSX Yosemite (pyenv + pip)
Jeu de vie avec Python [je l'ai fait] (sur terminal et Tkinter)
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Créez et essayez un environnement OpenCV et Python en quelques minutes à l'aide de Docker
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
Je veux créer un fichier pip et le refléter dans le menu fixe
L'environnement sans serveur est-il plus de 600 fois plus lent? ~ J'ai essayé l'analyse comparative avec Go, Node.js et Python! ~
J'ai acheté et analysé la loterie jumbo de fin d'année avec Python qui peut être exécutée dans Colaboratory
[Python] Le rôle de l'astérisque devant la variable. Divisez la valeur d'entrée et affectez-la à une variable
[Python] Définissez la plage du graphique avec matplotlib
Créer un environnement Jupyter Lab (Python) avec Docker
Utilisation de venv dans un environnement Windows + Docker [Python]
Derrière le flyer: utiliser Docker avec Python
[Python] Récupère le nom de la variable avec str
Afficher Python 3 dans le navigateur avec MAMP
Créer un environnement Python + uWSGI + Nginx avec Docker
Gérer les "années et mois" en Python
J'ai installé et utilisé Numba avec Python3.5
Environnement de lancement avec LineBot + Heroku + Docker + Python
Nettoyer l'environnement python avec Pythonz et virtualenv
Trouvez-le dans la file d'attente et modifiez-le
Introduction de sip-4.14 dans l'environnement python3.2.2 avec MacOS 10.7.4
Remplissez la chaîne avec des zéros en python et comptez certains caractères de la chaîne
J'ai remplacé le calcul numérique de Python par Rust et comparé la vitesse
[Python] J'ai essayé de résumer le type collectif (ensemble) d'une manière facile à comprendre.
Je voulais utiliser le notebook jupyter avec docker dans l'environnement pip (opticspy)
[Python] Doux Est-ce doux? À propos des suites et des expressions dans les documents officiels
Comment obtenir la différence de date et d'heure en secondes avec Python
Mettez le résultat du chat entre guillemets et mettez-le dans une variable
J'ai vectorisé l'accord de la chanson avec word2vec et je l'ai visualisé avec t-SNE
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
Obtenez et convertissez l'heure actuelle dans le fuseau horaire local du système avec python