Jawaban yang diterima mungkin benar dalam arti abstrak, tetapi sama sekali tidak relevan dengan masalah yang dihadapi. Anda memerlukan cara untuk menentukan kata sandi secara statis. Dan kecuali Anda menggunakan gambar resmi , Anda akan membutuhkannya terlepas dari apakah Anda mengikuti dogma "satu proses, satu wadah".
Jawabannya di sini
memberi tahu caranya, tetapi meninggalkan pengaturan kunci:Anda masih harus memberi tahu debconf
untuk menggunakan Noninteractive
front-end, seperti yang dijelaskan di sini
.
Berikut ini contoh Dockerfile
yang berfungsi berdasarkan hal di atas.
FROM ubuntu:latest
MAINTAINER Jonathan Strange <[email protected]>
RUN apt-get update \
&& apt-get install -y apt-utils \
&& { \
echo debconf debconf/frontend select Noninteractive; \
echo mysql-community-server mysql-community-server/data-dir \
select ''; \
echo mysql-community-server mysql-community-server/root-pass \
password 'JohnUskglass'; \
echo mysql-community-server mysql-community-server/re-root-pass \
password 'JohnUskglass'; \
echo mysql-community-server mysql-community-server/remove-test-db \
select true; \
} | debconf-set-selections \
&& apt-get install -y mysql-server apache2 python python-django \
python-celery rabbitmq-server git
Ini tidak terlalu berbeda dari apa yang Dockerfile
tidak -- meskipun mereka menangani konfigurasi kata sandi yang sebenarnya agak berbeda.
Beberapa orang telah sukses dengan menyetel DEBIAN_FRONTEND
variabel lingkungan menjadi noninteractive
, seperti ini:
ENV DEBIAN_FRONTEND noninteractive
Namun, itu tampaknya tidak berhasil dalam semua kasus. Menggunakan debconf
secara langsung telah terbukti lebih dapat diandalkan bagi saya.