2017-10-09 89 views
13

Próbuję ustawić moją aplikację eliksir-phoenix z bazą danych PostgreSQL do pracy z Dockerem. To właśnie mój Dockerfile wygląda następująco:Błąd dokowania: standard_init_linux.go: 185: exec proces użytkownika spowodował "brak takiego pliku lub katalogu"

# ./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 

A to moja doker-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" 

Wizerunek buduje pomyślnie, ale gdy próbuję zainstalować zależności pomocą następującego polecenia :

docker-compose run web mix do deps.get 

uzyskać te błąd:

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

PS: Znalazłem kilka odpowiedzi, takich jak this one, wskazując brakującą linię na początku pliku Bash, ale nie wydaje mi się to moim przypadkiem. Nie uruchamiam skryptu bash, a mój błąd pojawia się w linii 185, a nie 179.

+0

http://willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/ – Righto

Odpowiedz

8

Tak jak wspomniałeś, jedną z przyczyn może być brak pliku bash #!/bin/bash u góry.

Innym możliwym powodem może być zapisanie pliku z zakończeniami wiersza systemu Windows (CRLF). Zapisz go za pomocą końcówek linii Unix (LF) i zostanie znaleziony.

+1

Uratowałeś mi dzień. Używałem git config core.autocrlf = true (pliki zostały zapisane z końcówkami linii systemu Windows (CRLF)) i nie sądziłem, że może on ingerować w docker. Naprawdę dziękuję – vladkha

+1

Life saver -http: //willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/ – Righto