Docker swarm没有更新服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker swarm没有更新服务相关的知识,希望对你有一定的参考价值。

我使用docker stack deploy部署我的python服务。

首先,我编辑代码。

然后

docker build . -f Dockerfile -t my_service:$TAG docker tag my_service:$TAG register.xxx.com:5000/my_service:$TAG

当我使用docker run -p 9000:9000 register.xxx.com:5000/my_service:$TAG

它奏效了。

但是,当我使用docker stack deploy -c docker-compose.yml my_service_stack

该服务仍在运行旧代码。

docker-compose.yaml的一部分:

web: image: register.xxx.com:5000/my_service:v0.0.12 depends_on: - redis - db - rabbit links: - redis - db - rabbit volumes: - web_service_data:/home networks: - webnet

v0.0.12 == $ DAY

Dockerfile:

```

来自python:3.6.4

运行useradd -ms / bin / bash gmt

运行mkdir -p / home / logs

WORKDIR / home / gmt / src

COPY /src/requirements.txt。

RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

COPY / src。

跑猫/home/gmt/src/setting/env.yaml

ENV PYTHONPATH = / home / gmt / src

CMD [“gunicorn”,“ - c”,“/ home / gmt / src / gunicornconf.py”,“run:app”]

```

所以为什么?

答案
  1. 我没有看到您实际上将图像从构建服务器推送到注册表。我假设您在构建之后和部署之前就这样做了。
  2. 您不应该使用卷代码。该卷将使用卷的内容覆盖容器中的/ home,这可能是陈旧的。在卷中使用/存储代码是一种反模式。
  3. 你不需要links:they are legacy
  4. depends_on:不用于群体。
  5. 你不应该在容器中存储日志,你should have them sent to stdout and stderr

以上是关于Docker swarm没有更新服务的主要内容,如果未能解决你的问题,请参考以下文章

Docker Swarm 服务版本更新与回滚

如何调用docker swarm service的API来创建及更新服务

使用Docker Swarm搭建分布式爬虫集群

使用Docker Swarm搭建分布式爬虫集群

使用Docker swarm构建wordpress集群

37. docker swarm docker service 的更新