36

I want to install certbot in a docker environment with an Ubuntu 16.04 image:

For example:

docker run -it ubuntu:16.04 /bin/bash

When I'm inside the container, the most straightforward way to install certbot does not work as it requires user intervention:

apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

The problem is tzdata, which stops with this interactive dialog:

Extracting templates from packages: 100%
Preconfiguring packages ...
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

 1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
 2. America     5. Arctic     8. Europe    11. SystemV
 3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 

Strangely enough, it works when I install tzdata before adding the ppa:

apt-get update && \
apt-get install -y tzdata && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

Questions:

  • Why makes it a difference whether I install tzdata before or after adding the ppa?
  • Is there a better approach for avoiding the interactive dialog when installing certbot?
28

To run dpkg (behind other tools like Apt) without interactive dialogue, you can set one environment variable as

DEBIAN_FRONTEND=noninteractive
  • The edited answer works, @DavidFoerster's comment refers to its previous version. – Rafał G. Mar 17 '18 at 11:37
  • 3
    Note: sudo doesn't pass environment variables through in most cases, so sudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata works but DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata doesn't. – Brendan Long Mar 21 '18 at 0:00
  • 2
    For dockerfiles, add this: ENV DEBIAN_FRONTEND=noninteractive – jersey bean Dec 26 '18 at 2:19
5

On Ubuntu 18.04 I did that Dockerfile:

ENV TZ=Europe/Minsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt instal....

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.