docker上的certbot不';t为子域创建多个活动文件夹

docker上的certbot不';t为子域创建多个活动文件夹,docker,nginx,docker-compose,certificate,certbot,Docker,Nginx,Docker Compose,Certificate,Certbot,我运行了几个docker容器,在本例中是一个运行nginx:alpine的Web服务器和默认的certbox/certbox图像。 在Nginx容器上,我为带有静态网站的子域运行了2个服务器部件。主域在不同的VPS上运行,所以我为这两个子域做了特定的记录 这是我的nginx.conf server { listen 80; listen [::]:80; root /var/www/website1; index index.html; server_name websi

我运行了几个docker容器,在本例中是一个运行
nginx:alpine
的Web服务器和默认的
certbox/certbox
图像。 在Nginx容器上,我为带有静态网站的子域运行了2个服务器部件。主域在不同的VPS上运行,所以我为这两个子域做了特定的记录

这是我的
nginx.conf

server {
  listen 80;
  listen [::]:80;

  root /var/www/website1;
  index index.html;

  server_name website1.example.com;

  location / {
      try_files $uri $uri/ =404;
  }

  location ~ /.well-known/acme-challenge {
    allow all;
    root /var/www/website1;
  }
}

server {
  listen 80;
  listen [::]:80;

  root /var/www/website2;
  index index.html;

  server_name website2.example.com;

  location / {
      try_files $uri $uri/ =404;
  }

  location ~ /.well-known/acme-challenge {
    allow all;
    root /var/www/website2;
  }
}
正如预期的那样,我可以看到这两个网站都在子域上工作

但是当我尝试在两个站点上运行certbot时,只创建了一个文件夹(第一个子域中的一个)

这是我用于此操作的docker compose文件:

version: '3'

services:
  webserver:
    image: nginx:alpine
    container_name: webserver
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - website1:/var/www/website1
      - website2:/var/www/website2
      - ./nginx-conf:/etc/nginx/conf.d:ro
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/lib/letsencrypt
    networks:
      - app-network

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/lib/letsencrypt
      - website1:/var/www/website1
      - website2:/var/www/website2
    depends_on:
      - webserver
    command: certonly --email my.name@example.com --agree-tos --no-eff-email --staging --webroot -w /var/www/website1 -d website1.example.com -w /var/www/website2 -d website2.example.com

volumes:
  certbot-etc:
  certbot-var:
  website1:
    driver: local
    driver_opts:
      type: none
      device: /home/user/html/website1/
      o: bind
  website2:
    driver: local
    driver_opts:
      type: none
      device: /home/user/html/website2/
      o: bind

networks:
  app-network:
    driver: bridge
certbot容器运行正常,退出时带有
(0)
,当我去查看Web服务器容器时:
sudo docker compose exec webserver ls-la/etc/letsencrypt/live
我得到以下信息:

total 16
drwx------    3 root     root          4096 Feb  7 20:05 .
drwxr-xr-x    9 root     root          4096 Feb  8 12:19 ..
-rw-r--r--    1 root     root           740 Feb  7 20:05 README
drwxr-xr-x    2 root     root          4096 Feb  7 20:05 website1.example.com
所以第二个子域没有被创建

我还尝试通过将我的
docker compose.yml
命令更改为:

command: >
      sh -c "certonly --email my.name@example.com --agree-tos --no-eff-email --staging --webroot -w /var/www/website1 -d website1.example.com
          && certonly --email my.name@example.com --agree-tos --no-eff-email --staging --webroot -w /var/www/website2 -d website2.example.com"
但这会导致一个错误:
certbot:error:找不到文件:certonly--给我发电子邮件。name@example.com--a…

如何使certbot为这两个子域创建证书?或者如何在我的
docker compose.yml
文件中使用多个命令而不返回错误