0

一段时间以来,我在使用新的 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 
4

0 回答 0