Câu trả lời được chấp nhận có thể đúng theo một nghĩa trừu tượng nào đó, nhưng nó hoàn toàn không liên quan đến vấn đề đang bàn. Bạn cần một cách để chỉ định mật khẩu tĩnh. Và trừ khi bạn đang sử dụng hình ảnh chính thức , bạn sẽ cần điều đó cho dù bạn có tuân theo giáo điều "một quy trình, một vùng chứa" hay không.
Câu trả lời tại đây
cho biết cách thực hiện, nhưng nó để lại một cài đặt chính:bạn vẫn phải nói với debconf
để sử dụng Noninteractive
front-end, như được mô tả tại đây
.
Đây là một ví dụ về Dockerfile
đang hoạt động dựa trên những điều trên.
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
Điều này không quá khác biệt so với những gì chính thức Dockerfile
không - mặc dù chúng xử lý cấu hình mật khẩu thực tế hơi khác một chút.
Một số người đã thành công nhờ đặt DEBIAN_FRONTEND
biến môi trường thành noninteractive
, như vậy:
ENV DEBIAN_FRONTEND noninteractive
Tuy nhiên, điều đó dường như không hiệu quả trong mọi trường hợp. Sử dụng debconf
trực tiếp đã được chứng minh là đáng tin cậy hơn đối với tôi.