无法在Docker Swarm集群中将pypiserver部署为服务
你好。我正在尝试在我的Docker Swarm集群中部署一个PyPiServer服务。可惜的是,我无法成功部署这个服务。这里是我的堆栈信息,我想说明的是,我在当前目录下创建了一个pypi.yaml文件。我还在当前目录下创建了一个.htpasswd文件和一个packages文件夹。我希望从当前目录启动这个堆栈。所以,如果我的pypi.yaml配置有任何错误,请帮帮我。
version: '3.8'
services:
pypi-server:
image: pypiserver/pypiserver:latest
networks:
- traefik-public
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.pypi-server.rule=Host(`pypi.mydomaine.com`)"
- "traefik.http.services.pypi-server.loadbalancer.server.port=8080"
- "traefik.http.routers.pypi-server.entrypoints=websecure"
- "traefik.http.routers.pypi-server.tls=true"
- "traefik.http.routers.pypi-server.tls.certresolver=leresolver"
ports:
- "8081:8080"
volumes:
- /home/sheguey/.htpasswd:/data/auth/.htpasswd
- /home/sheguey/packages:/data/packages
command: -P /data/auth/.htpasswd -a update,download,list /data/packages
restart: always
networks:
traefik-public:
external: true
我只是想在我的Docker Swarm集群中部署我的pypi服务器。
1 个回答
-1
虽然Docker Swarm可以在单个节点上运行,但如果想要支持多个节点的配置,就需要利用Docker的配置功能,以及某种分布式或网络文件存储,这样每个节点才能访问到所需的配置和数据文件。
我修改了提供的文件,演示了如何从与stack.yaml文件在同一文件夹中的.htpasswd文件创建Docker配置,并将其挂载到目标容器中,以及如何定义一个挂载网络共享的卷。
configs:
htpasswd:
file: .htpasswd
volumes:
packages:
driver_opts:
type: "nfs"
o: "nolock,soft,rw"
device: "nfs-server-ip:/packages"
services:
server:
image: pypiserver/pypiserver:latest
networks:
- traefik
deploy:
labels:
traefik.enable: "true"
traefik.http.routers.pypi-server.rule: HostRegexp(`pypi.{any:.*}`)
traefik.http.services.pypi-server.loadbalancer.server.port: 8080
traefik.http.routers.pypi-server.entrypoints: websecure
traefik.http.routers.pypi-server.tls: "true"
traefik.http.routers.pypi-server.tls.certresolver: leresolver
volumes:
- packages:/data/packages
configs:
- source: htpasswd
target: /data/auth/.htpasswd
command: -P /data/auth/.htpasswd -a update,download,list /data/packages
networks:
traefik:
external: true
name: traefik-public