Docker swarm没有更新服务

时间:2018-03-02 03:37:31

标签: docker docker-compose 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 == $ TAG

Dockerfile:

```

FROM python:3.6.4

运行useradd -ms / bin / bash gmt

RUN 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。

RUN cat /home/gmt/src/setting/env.yaml

ENV PYTHONPATH = / home / gmt / src

CMD [" gunicorn"," -c"," /home/gmt/src/gunicornconf.py" ;,"运行:app&# 34]

```

那么,为什么?

1 个答案:

答案 0 :(得分:1)

  1. 我没有看到您实际将图像从构建服务器推送到注册表。我假设你在构建之后和部署之前就已经这样做了。

  2. 您不应该使用卷代码。该卷将使用卷的内容覆盖容器中的/ home,这可能是陈旧的。在卷中使用/存储代码是一种反模式。

  3. 您不需要links:they are legacy

  4. depends_on:未在群体中使用。

  5. 您不应将日志存储在容器中should have them sent to stdout and stderr