Hantar kata laluan daripada arahan daripada .env ke mysql inside docker
P粉521748211
P粉521748211 2024-03-26 09:38:42
0
2
406

Saya pada asasnya tidak tahu apa-apa tentang buruh pelabuhan. Tidak begitu banyak tentang bash sama ada. Jadi:

Terdapat arahan dalam fail readme projek Laravel yang sedang saya kerjakan yang menunjukkan cara mengisi beberapa data pada imej docker MySQL tempatan dengan menghantar pertanyaan daripada fail yang terletak dalam mesin hos.

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

Apa yang saya mahu lakukan ialah "sembunyikan" kata laluan daripada README dan minta ia dibaca daripada fail .env

Jadi, saya nak buat macam ni:

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

Saya telah menguji docker ... printenv 确实显示了文件中的变量。但是回显其中一个会输出一个空行: docker ... echo $DB_PASSWORD dan menggunakannya untuk menjalankan arahan MySQL memberi saya "Akses ditolak untuk pengguna 'root'@'localhost'"

Saya cuba menjalankan arahan MySQL "secara langsung": docker ... mysql ... < file.sql ,也尝试“间接”运行: docker bash -c "mysql ..." < file.sql .

P粉521748211
P粉521748211

membalas semua(2)
P粉403804844

Mungkin ada dua situasi.

  1. Semak nama kunci dalam fail env dan arahan docker run
  2. Semak laluan ke fail env yang ingin anda petakan.
P粉464082061

Anda harus menghalang shell daripada mengembangkan pembolehubah setempat (melalui petikan tunggal atau melarikan diri $)

Ini harus dihantar ke cangkang bekas dan dikembangkan di sana:

docker exec --env-file=.env -i {image} bash -c 'mysql -uroot -p$DB_PASSWORD {database}' 
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan