Ketika saya mencoba menginstal file bin secara manual di dalam kontainer Docker ubuntu, file tersebut bekerja dengan sempurna,
./MyBinfile.bin
tetapi ketika saya mencobanya dari Dockerfile saya, saya selalu mendapatkan kesalahan: Perintah '/bin/sh -c chmod +x /tmp/snapcenter_linux_host_plugin.bin && ./tmp/MyBinFile.bin' mengembalikan kode bukan nol: 1
Dockerfile saya terlihat seperti:
FROM debian:jessie
RUN apt-get update && apt-get install -y openjdk-7-jdk
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
RUN echo $JAVA_HOME
COPY MyBinFile.bin /tmp/MyBinFile.bin
RUN chmod +x /tmp/MyBinFile.bin && ./tmp/MyBinFile.bin
Adakah yang bisa membantu saya dalam hal ini?
Anda menyalin MyBinFile.bin ke /tmp/MyBinFile.bin. Itu bukan file yang sama. Jika Anda perlu menjalankannya, gunakan path absolut untuk file yang memiliki atribut executable di dalamnya. Jadi baris terakhir Anda seharusnya:
RUN chmod +x /tmp/MyBinFile.bin && /tmp/MyBinFile.bin
'.' (titik) mewakili direktori kerja anda saat ini. Disarankan untuk selalu menggunakan path absolut jika Anda tidak yakin apa cwd Anda.
EDIT
Menjalankan Dockerfile Anda menghasilkan keluaran berikut:
Sending build context to Docker daemon 3.584 kB
Step 1/6 : FROM debian:jessie
---> 8cedef9d7368
Step 2/6 : RUN apt-get update && apt-get install -y openjdk-7-jdk
---> Using cache
---> 1a0005923f41
Step 3/6 : ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
---> Using cache
---> 5651d50b519e
Step 4/6 : RUN echo $JAVA_HOME
---> Using cache
---> 96655235a2cf
Step 5/6 : COPY MyBinFile.bin /tmp/MyBinFile.bin
---> 60c79aaf5aca
Removing intermediate container cd729c315e9b
Step 6/6 : RUN chmod +x /tmp/MyBinFile.bin && /tmp/MyBinFile.bin
---> Running in 5db126cbd24c
/bin/sh: 1: /tmp/MyBinFile.bin: Text file busy
The command '/bin/sh -c chmod +x /tmp/MyBinFile.bin &&
/tmp/MyBinFile.bin' returned a non-zero code: 2
Tetapi jika saya memisahkan langkah terakhir Anda menjadi dua langkah yang berbeda:
FROM debian:jessie
RUN apt-get update && apt-get install -y openjdk-7-jdk
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
RUN echo $JAVA_HOME
COPY MyBinFile.bin /tmp/MyBinFile.bin
RUN chmod +x /tmp/MyBinFile.bin
RUN /tmp/MyBinFile.bin
maka itu akan berjalan dengan baik.