【发布时间】:2018-12-14 06:23:03
【问题描述】:
我对 docker 很陌生,所以我按照他们的官方教程并尝试了适用于我的工作项目的“快捷方式”。我有以下 docker-compose.yml:
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: my_image
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "4000:80"
networks:
- webnet
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:
my_image 是一个简单的烧瓶应用程序,它启动 Flask 和 Redis,然后打印访问次数:
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
当我像这样开始集群时:
sudo docker swarm init --advertise-addr <ip>
sudo docker stack deploy -c docker-compose.yml flask_with_redis
my_image 映像启动良好,我可以看到它在 127.0.0.1:4000 上运行,但 Redis 从未启动。
我怀疑我的docker-compose.yml 有问题,尤其是redis 服务,因为my_image 运行良好。
通过运行requirements.py,Redis 和 Flask 也肯定会添加到my_image。
有没有人经历过类似的事情?你能帮我吗?
【问题讨论】:
标签: docker redis docker-swarm