你好。我正在尝试在我的 Docker Swarm 堆栈中部署 PyPiServer 服务。不幸的是,我无法部署 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 服务器
虽然 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