Docker错误:standard_init_linux.go:185:exec用户进程导致"没有这样的文件或目录"

nto*_*ier 18 postgresql elixir docker phoenix-framework docker-compose

我正在尝试使用postgresql数据库设置我的elixir-phoenix应用程序以使用Docker运行.这就是我的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
Run Code Online (Sandbox Code Playgroud)

这是我的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"
Run Code Online (Sandbox Code Playgroud)

图像构建成功,但是当我尝试使用以下命令安装依赖项时:

docker-compose run web mix do deps.get
Run Code Online (Sandbox Code Playgroud)

我得到这些错误:

standard_init_linux.go:185: exec user process caused "no such file or directory"
Run Code Online (Sandbox Code Playgroud)

PS:我发现了一些像这样的答案,在bash文件的开头指出了一条缺失的行,但它似乎不是我的情况.我没有运行bash脚本,我的错误出现在第185行,而不是179.

Rya*_*len 16

就像你提到的,一个原因可能是#!/bin/bash顶部缺少bash文件.

另一个可能的原因可能是文件是使用Windows行结尾(CRLF)保存的.使用Unix行结尾(LF)保存它,它将被找到.

  • 你救了我的一天.我使用的是git config core.autocrlf = true(文件是用Windows行结尾(CRLF)保存的),甚至没想到它可以用docker进行干预.真的很谢谢你 (2认同)
  • 救生员-http://willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/ (2认同)