[英]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.