![](/img/trans.png)
[英]How do I run my docker container after loading it without running docker-compose up?
[英]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.