我有两个图像。一个使用Go语言编写的Web服务,另一个则使用Ruby worker。 Web服务这样调用工作程序:
func (img image) applyBlur() error {
blurCommand := exec.Command("ruby", "controller/blurImage.rb", img.path)
return blurCommand.Run()
}
如何使两个容器相互连接?
我为图像制作了以下两个Dockerfile(请记住,我刚刚开始学习docker)。
工人:
FROM nvidia/cuda:10.1-base-ubuntu18.04
LABEL version="0.0.1"
LABEL maintainer="mjg"
RUN apt update \
&& apt install -y python3.6 python3-pip \
&& apt install -y ruby
WORKDIR /cvlib
RUN pip3 install --upgrade pip; \
pip3 install opencv-python tensorflow cvlib; \
apt install -y libsm6 libxext6 libxrender-dev libgl1-mesa-glx; \
apt remove -y python3-pip
WORKDIR /app
COPY . .
VOLUME [ "/app/blurred-images", "app/source-images" ]
Web服务:
FROM golang:1.15.2
LABEL version="0.0.1"
LABEL maintainer="mjg"
WORKDIR /go/src/github.com/m-goncalves/webservice
COPY server/ server/
COPY cmd/ cmd/
COPY index.html .
RUN GOBIN=/go/bin go install cmd/webservice/webservice.go
ENTRYPOINT /go/bin/webservice
EXPOSE 8080
VOLUME [ "/source-images", "/blurred-images"
答案 0 :(得分:1)
要在所拥有的容器之间建立连接,必须确保它们在同一网络内。这可以通过在一个docker-compose文件中设置两个容器来实现。您也可以根据需要明确设置网络。
第二个选项是先创建一个docker网络,然后分别启动两个容器,但设置先前创建的公共网络。
有关更多信息,请参考docker compose networking documentation。