无法在我的 docker swarm 集群上将 pypiserver 部署为服务

问题描述 投票:0回答:1

你好。我正在尝试在我的 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 服务器

python docker-compose docker-swarm pypiserver
1个回答
0
投票

虽然 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
© www.soinside.com 2019 - 2024. All rights reserved.