我使用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]
```
那么,为什么?
答案 0 :(得分:1)
我没有看到您实际将图像从构建服务器推送到注册表。我假设你在构建之后和部署之前就已经这样做了。
您不应该使用卷代码。该卷将使用卷的内容覆盖容器中的/ home,这可能是陈旧的。在卷中使用/存储代码是一种反模式。
您不需要links:
,they are legacy。
depends_on:
未在群体中使用。
您不应将日志存储在容器中should have them sent to stdout and stderr。