web-dev-qa-db-ja.com

Dockerエラー:standard_init_linux.go:185:execユーザープロセスにより「no such file or directory」が発生しました

Dockerで実行するようにpostgresqlデータベースを使用してelixir-phoenixアプリを設定しようとしています。これは私のDockerfileのようです:

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

そして、これは私のdocker-compose.ymlファイルです:

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"

イメージは正常にビルドされますが、次のコマンドで依存関係をインストールしようとすると:

docker-compose run web mix do deps.get

これらのエラーが表示されます:

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

PS: this one のようないくつかの答えを見つけました。bashファイルの先頭に行がないことを指摘していますが、私の場合はそうではありません。 bashスクリプトを実行せず、179ではなく185行目にエラーが表示されます。

18
ntonnelier

あなたが言ったように、1つの原因はbashファイルが欠落していることかもしれません#!/bin/bash 頂点で。

もう1つの考えられる理由は、ファイルがWindows行末記号(CRLF)で保存されている場合です。 Unix行末記号(LF)で保存すると、検索されます。

16
Ryan Allen