一段时间以来,我在使用新的 swarm 模式时遇到了一个棘手的问题。
我只是尝试在第一个容器中运行一个 go web 服务器,在第二个容器中运行一个 mongo db。因此,我使用的是私有测试图像和标准 mongo 图像。在端口 27017 上调用 mongo 服务有效。go run main.go 命令在测试服务中运行。我在 Dockerfile 中公开:8080。此外端口:“4444:8080”为 go 服务(用户,测试图像)设置。
Dockerfile:
1 FROM crypvert-base:latest
2
3 ADD . /go/src/test
4 WORKDIR /go/src/test
5
6 RUN go get -d -v
7 RUN go install test
8 ENTRYPOINT /go/bin/test
9
10 EXPOSE 8080
docker-stack.yml
1 version: "3"
2
3 services:
4 users:
5 image: test:latest
6 ports:
7 - "4444:8080"
8 depends_on:
9 - mongo
10 mongo:
11 image: mongo:latest
用户/bootstrap.go
8 func Bootstrap() {
10 e := echo.New()
19 e.Logger.Fatal(e.Start(":8080"))
20 }
$ docker service inspect --pretty test_users
ID: o9wz4b17bew1s66ixy0i231uu
Name: test_users
Labels:
com.docker.stack.namespace=test
Service Mode: Replicated
Replicas: 1
Placement:
ContainerSpec:
Image: test:latest
Resources:
Networks: kd7q422w06quendlh8xkz7r6o
Endpoint Mode: vip
Ports:
PublishedPort 4444
Protocol = tcp
TargetPort = 8080