Docker error: standard_init_linux.go:185: exec user process caused "no such file or directory"

ntonnelier picture ntonnelier · Oct 9, 2017 · Viewed 7.7k times · Source

I'm trying to set my elixir-phoenix app with postgresql database to run with Docker. This is what my Dockerfile looks like:

# ./Dockerfile

# Starting from the official Elixir 1.5.2 image:
# https://hub.docker.com/_/elixir/
FROM elixir:1.5.2

ENV DEBIAN_FRONTEND=noninteractive

# Install hex
RUN mix local.hex

# Install rebar
RUN mix local.rebar

# Install the Phoenix framework itself
RUN mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

# Install NodeJS 6.x and the NPM
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y -q nodejs

# Set /lib as workdir
WORKDIR /lib

And this is my docker-compose.yml file:

web:
  build: .
  dockerfile: Dockerfile 
  env_file: .env 
  command: mix phx.server # Start the server if no other command is specified
  environment:
    - MIX_ENV=dev
    - PORT=4000
    - PG_HOST=postgres
    - PG_USERNAME=postgres
  volumes:
    - .:/lib 
  ports:
    - "4000:4000"
  links:
    - postgres

test:
  image: phoenixbootstrap_web
  env_file: .env
  command: mix test
  environment:
    - MIX_ENV=test 
    - PORT=4001
    - PG_HOST=postgres
    - PG_USERNAME=postgres
  volumes_from:
    - web
  links:
    - postgres

postgres:
  image: postgres:10.0
  ports:
    - "5432"

The image builds successfully, but when I try to install the dependencies with the following command:

docker-compose run web mix do deps.get

I get these Error:

standard_init_linux.go:185: exec user process caused "no such file or directory"

PS: I found a couple of answers like this one, pointing out a missing line at the beginning of a bash file but it doesn't seem to be my case. I run no bash script and my error appears in line 185, not 179.

Answer

Ryan Allen picture Ryan Allen · Nov 6, 2017

Like you mentioned, one cause could be that the bash file is missing #!/bin/bash at the top.

Another possible reason could be if the file is saved with Windows line endings (CRLF). Save it with Unix line endings (LF) and it will be found.