Selamat siang rekan-rekan, saya sedang bekerja dengan Docker dalam pembuatan beberapa gambar dan saya telah menemukan bahwa beberapa fasilitas mengajukan pertanyaan kepada pengguna seperti kata sandi.

Ada kemungkinan menanyai pengguna selama proses pembuatan gambar dan kemudian meneruskan meteran itu untuk perintah lain, misalnya kode ini mengirimi saya kesalahan

FROM ubuntu:16.04
SHELL ["/bin/bash","-c"]
RUN ["echo","========== Enter root password for db =========="]
RUN ["/bin/bash","read","pass"]
RUN debconf-set-selections <<< "mysql-server mysql-server/root_password password $pass"
RUN debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $pass"`

Pesan kesalahannya adalah sebagai berikut:

The command '/bin/bash read pass' returned to non-zero code: 127

Kemudian proses build gagal, Adakah saran untuk melakukan ini, untuk membaca dari pengguna selama waktu build?

0
Victor Barajas 22 November 2017, 22:18

1 menjawab

Jawaban Terbaik

Docker build berjalan dalam mode noninteraktif - itu berarti tidak dapat menangani perintah baca Anda untuk menerima kata sandi dari input pengguna saat membuat gambar.

Saya akan menyarankan untuk menggunakan fitur build args docker sebagai gantinya - lihat di sini https://docs. docker.com/engine/reference/builder/#arg sehingga Anda dapat membaca pass dari pengguna sebelum membuat gambar dan kemudian meneruskannya melalui build arg untuk membangun proses tetapi harap diingat bahwa melewati kata sandi menggunakan perintah shell dan teks biasa tidak terlalu aman.

2
Jakub Bujny 22 November 2017, 21:33