Memodifikasi file host di dockerfile

Saya memiliki Dockerfile dengan instruksi RUN untuk memodifikasi file / etc / hosts tetapi tidak berfungsi.

FROM dockerhub.mydomain.com/sometag/java8MAINTAINER itsmeADD some-java-app.jar app.jarADD hosts tmp/ENV PATH=/opt/java/bin:$PATHRUN cat /tmp/hosts >> /etc/hostsCMD ["java",\    "-Djava.security.egd=file:/dev/./urandom",\    "-jar",\    "/app.jar"]

Di hosts file yang disalin ke / tmp di docker image ada tambahan nama host dan IP. Saya ingin cat bahwa /tmp/hosts untuk /etc/hosts tapi setelah membangun citra /etc/hosts tidak dimodifikasi.

Bagaimana cara memodifikasi file ini dengan benar?EDIT: saya mencoba menggunakan tee perintah tetapi sementara gambar adalah membangun konten dari /tmp/hosts digaungkan untuk menghibur, bukan untuk /etc/hosts.

RUN bash -c 'cat /tmp/hosts | tee -a /etc/hosts'

Sepertinya | atau >> tidak bekerja di Dockerfile.

Docker menciptakan /etc/hosts file saat wadah dimulai. Itu sebabnya modifikasi saya /etc/hosts berkas ditimpa. Saya dapat mengubah file host secara dinamis, melalui perintah CMD.

FROM dockerhub.mydomain.com/sometag/java8MAINTAINER itsmeADD some-java-app.jar app.jarADD hosts tmp/ENV PATH=/opt/java/bin:$PATHCMD cat /tmp/hosts >> /etc/hosts; java -Djava.security.egd=file:/dev/./urandom -jar /app.jar; cat /etc/hosts

Perintah terakhir menunjukkan perubahan yang dilakukan oleh perintah pertama di baris CMD.

Saya pikir jika Anda ingin mengimpor file Anda harus menggunakan copy fungsi dan tidak add - tambahkan jika Anda mendapatkan dari URL atau mengimpor arsip.

docker memberikan ini sebagai contoh:

COPY requirements.txt /tmp/RUN pip install --requirement /tmp/requirements.txtCOPY . /tmp/

jadi dalam contoh Anda, ini harus bekerja

COPY hosts /tmp/ENV PATH=/opt/java/bin:$PATHRUN cat /tmp/hosts >> /etc/hosts