Transmettez le mot de passe de la commande de .env à mysql dans Docker
P粉521748211
P粉521748211 2024-03-26 09:38:42
0
2
361

Je ne connais pratiquement rien à Docker. Pas tellement à propos de bash non plus. Alors :

Il y a une commande dans le fichier readme du projet Laravel sur lequel je travaille qui montre comment remplir certaines données sur une image docker MySQL locale en envoyant une requête à partir d'un fichier situé sur la machine hôte.

docker exec -i {image} mysql -uroot -p{password} {database} < location/of/file.sql

Ce que je veux faire, c'est "masquer" le mot de passe du README et le faire lire dans le .env fichier

Donc, je veux faire quelque chose comme ceci :

docker exec --env-file=.env -i {image} mysql -uroot -p$DB_PASSWORD {database} < location/of/file.sql

J'ai testé docker ... printenv 确实显示了文件中的变量。但是回显其中一个会输出一个空行: docker ... echo $DB_PASSWORD et l'utiliser pour exécuter des commandes MySQL me donne "L'accès est refusé pour l'utilisateur 'root'@'localhost'"

J'ai essayé d'exécuter la commande MySQL "directement" : docker ... mysql ... < file.sql ,也尝试“间接”运行: docker bash -c "mysql ..." < file.sql .

P粉521748211
P粉521748211

répondre à tous(2)
P粉403804844

Il peut y avoir deux situations.

  1. Vérifiez le nom de la clé dans le fichier env et la commande docker run
  2. Vérifiez le chemin d'accès au fichier env auquel vous souhaitez mapper.
P粉464082061

Vous devez empêcher le shell de développer les variables locales (via des guillemets simples ou une fuite $)

Cela doit être transmis à la coque du conteneur et développé à cet endroit :

docker exec --env-file=.env -i {image} bash -c 'mysql -uroot -p$DB_PASSWORD {database}' 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!