【问题标题】:Multiple service starting with make inside docker-composedocker-compose 中以 make 开头的多项服务
【发布时间】:2016-10-29 14:31:01
【问题描述】:

我有一个相当简单的架构。

来自互联网的前端监听;它将消息放在消息代理上;消息由后端消费。

我有一个用于前端和消息代理的 docker-compose 文件,一个用于消息代理和后端的文件,两者都运行良好。但是,我需要一个完整的 docker-compose 以及所有 3 个服务。

主要问题是前端和后端都需要开始使用make。

以前端为例:

frontend:
  build: .
  command: make serve
  depends_on:
    - message_broker

message_broker:
  image: message/broker

后端几乎相同。

现在我试图将两者结合在一起:

frontend:
  build: frontend
  command: make serve
  depends_on:
    - message_broker

backend:
  build: backend
  command: make serve
  depends_on:
    - message_broker
    - frontend

message_broker:
  image: message/broker

但是,当我尝试使用docker-compose up 运行它时,我得到make: *** No rule to make target 'serve'. Stop. 用于前端和后端的任一服务。

当然,每个 Makefile 中都有serve 的规则。

单个dockerfile是这样的:

FROM golang:1.6.2

ENV PROJECT_PATH=/go/src/github.com/brocaar/lora-semtech-bridge
ENV PATH=$PATH:$PROJECT_PATH/build

# install tools
RUN go get github.com/golang/lint/golint
RUN go get github.com/kisielk/errcheck

# setup work directory
RUN mkdir -p $PROJECT_PATH
WORKDIR $PROJECT_PATH

# copy source code
COPY . $PROJECT_PATH

# build
RUN make build

CMD ["semtech-bridge"]

我觉得我在错误的目录中运行 make,我该如何解决?

【问题讨论】:

    标签: makefile docker docker-compose


    【解决方案1】:

    您的印象是正确的。 :p 在你的 Dockerfile 中设置WORKDIR。

    【讨论】:

    • 在每个 Dockerfile 中,还是在 docker-compose 中?因为在每个 Dockerfile 内部都已经设置好了,而我在 compose 中找不到太多关于设置 WORKDIR 的参考...
    • 要进一步详细说明 Erik 的回答,请查看前端和后端的 Dockerfile,并检查您的应用程序正在添加/复制到哪个目录。然后将 Dockerfile 或 docker-compose 中的命令/入口点调整为相对于您的应用程序位置。
    • 如果有疑问,运行图像交互,即docker-compose run --rm frontend pwd 并仔细检查路径。
    • 我有点明白发生了什么,它看起来有点复杂。
    • Dockerfiles 位于我放置 docker-compose 的目录中。 Dockerfiles 将所有目录复制到他们的本地路径中,然后当我尝试运行 make serve 时,即使现在文件是正确的并且他们发现指令整个目录都搞砸了,它不起作用......
    猜你喜欢
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2020-10-08
    • 2016-08-12
    相关资源
    最近更新 更多