繁体   English   中英

在我运行 docker compose up 后,我的 mac 返回错误,指出它找不到我的 mix phx.server。 如何向 docker 显示我的 mix.exs 文件在哪里?

[英]After I run docker compose up, my mac returns error stating that it can't find my mix phx.server. How do I show docker where my mix.exs file is?

当我运行 Docker Compose 时,我收到一个错误

** (Mix) The task "phx.server" could not be found
Note no mix.exs was found in the current directory

我相信这是我运行该项目所需的最后一步。 这是一个 phoenix/Elixir Docker 项目。 Mix.exs 是我项目中的顶级文件,与我的 dockerfile/docker-compose 文件处于同一级别。

Dockerfile

FROM elixir:1.13.1

# Build Args
ARG PHOENIX_VERSION=1.6.6
ARG NODEJS_VERSION=16.x

# Apt
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y apt-utils
RUN apt-get install -y build-essential
RUN apt-get install -y inotify-tools

# Nodejs
RUN curl -sL https://deb.nodesource.com/setup_${NODEJS_VERSION} | bash
RUN apt-get install -y nodejs

# Phoenix
RUN mix local.hex --force
RUN mix archive.install --force hex phx_new #{PHOENIX_VERSION}
RUN mix local.rebar --force

# App Directory
ENV APP_HOME /app
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME

COPY . .
# App Port
EXPOSE 4000

# Default Command
CMD ["mix", "phx.server"]

Docker-compose.yml


version: "3"

services:
  book-search:
    build: .
    volumes:
      - ./src:/app
    ports:
      - "4000:4000"
    depends_on:
      - db
  db:
    image: postgres:9.6
    environment:
      POSTGRES_DB: "db"
      POSTGRES_HOST_AUTH_METHOD: "trust"
      POSTGRES_USER: tmclean
      POSTGRES_PASSWORD: tmclean
      PGDATA: /var/lib/postgresql/data/pgdata
    restart: always
    volumes:
      - ./pgdata:/var/lib/postgresql/data

让我知道我还能回答哪些其他问题

问题是您docker-compose.yml文件。

volumes:
  - ./src:/app

您正在使用可能不存在的src目录覆盖应用程序。 将其更改为:

volumes:
  - .:/app

它应该可以工作。 但是,如果这样做,复制Dockerfile中的文件没有意义,因此您也可以删除

COPY . .

或者,如果您希望源文件位于映像中,请保留COPY ,并从docker-compose.yml中的book-search服务中删除volumes部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM