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行目にエラーが表示されます。
あなたが言ったように、1つの原因はbashファイルが欠落していることかもしれません#!/bin/bash
頂点で。
もう1つの考えられる理由は、ファイルがWindows行末記号(CRLF)で保存されている場合です。 Unix行末記号(LF)で保存すると、検索されます。