I have a Dockerfile with RUN instruction to modify /etc/hosts file but it doesn't work.
FROM dockerhub.mydomain.com/sometag/java8
MAINTAINER itsme
ADD some-java-app.jar app.jar
ADD hosts tmp/
ENV PATH=/opt/java/bin:$PATH
RUN cat /tmp/hosts >> /etc/hosts
CMD ["java",\
"-Djava.security.egd=file:/dev/./urandom",\
"-jar",\
"/app.jar"]
In hosts
file that is copied to /tmp in docker image there is a additional hosts names and IPs. I want to cat
that /tmp/hosts
to /etc/hosts
but after building image /etc/hosts
is unmodified.
How to modify this file properly?
EDIT:
I'm trying to use tee
command but while image is build contents of /tmp/hosts
is echoed to console, not to /etc/hosts
.
RUN bash -c 'cat /tmp/hosts | tee -a /etc/hosts'
It looks like |
or >>
doesn't work in Dockerfile.
Best Answer
Docker creates
/etc/hosts
file while container is started. That's why my modifications of/etc/hosts
file are overwritten. I can change hosts file dynamically, via CMD command.Last commands shows changes made by first command in CMD row.