I created a folder in Windows that has a Dockerfile and an install.sh script. When I attempt to build the docker image, I get an error that says:
=> ERROR [4/4] RUN /install.sh 0.6s ------ > [4/4] RUN /install.sh: #7 0.584 /bin/sh: 1: /install.sh: not found This is my Dockerfile:
FROM ubuntu:latest ADD install.sh / RUN chmod u+x /install.sh RUN /install.sh ENV PATH /root/miniconda3/bin:$PATH This is my install.sh:
#!/bin/bash apt-get update apt-get upgrade -y apt-get install -y bzip2 gcc git ping htop screen vim wget apt-get clean wget -O Miniconda.sh bash Miniconda.sh -b rm -rf Miniconda.sh export PATH="/root/miniconda3/bin:$PATH" conda install -y pandas sh -c "$(wget -O -)" CMD ["/bin/zsh"] This is what I am running in Windows to produce the error:
docker build -t app_test:v1.01 . output:
[+] Building 1.3s (8/8) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 158B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for 0.0s => [internal] load build context 0.0s => => transferring context: 490B 0.0s => CACHED [1/4] FROM 0.0s => [2/4] ADD install.sh / 0.0s => [3/4] RUN chmod u+x /install.sh 0.5s => ERROR [4/4] RUN /install.sh 0.6s ------ > [4/4] RUN /install.sh: #7 0.584 /bin/sh: 1: /install.sh: not found ------ executor failed running [/bin/sh -c /install.sh]: exit code: 127 So far I've tried the following:
- renaming the
install.shfile to something else - Changing the
ADDline toCOPYso that the line saysCOPY install.sh /install.sh - googling the issue to see anyone else has experienced something similar.
EDIT #1:
tree and ls output:
PS C:\Users\Rick\Documents\experiments> tree Folder PATH listing Volume serial number is D49A-7235 C:. No subfolders exist PS C:\Users\Rick\Documents\experiments> ls Directory: C:\Users\Rick\Documents\experiments Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/21/2021 11:11 AM 132 Dockerfile -a--- 11/21/2021 9:05 AM 451 install.sh EDIT #2 adding RUN ls / to Dockerfile:
[+] Building 2.0s (9/9) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 181B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for 0.0s => [internal] load build context 0.0s => => transferring context: 32B 0.0s => [1/5] FROM 0.0s => CACHED [2/5] COPY install.sh /install.sh 0.0s => [3/5] RUN ls / 0.5s => [4/5] RUN chmod u+x /install.sh 0.6s => ERROR [5/5] RUN /install.sh 0.7s ------ > [5/5] RUN /install.sh: #9 0.694 /bin/sh: 1: /install.sh: not found ------ executor failed running [/bin/sh -c /install.sh]: exit code: 127 51 Answer
The cause of the issue was saving the install.sh file using Windows line endings. It needed to be saved using Unix line endings. In Visual Studio Code, change the "CRLF" button to "LF".