【发布时间】:2019-08-08 09:09:11
【问题描述】:
我们正在使用下面的 docker stack 文件在 docker swarm 中部署 consul 和 traefik。这会从 Lets Encrypt 生成 SSL 证书并按预期工作。但是,我们已经预购了希望用于某些域的通配符链证书(.crt 和 .key)。我们将如何上传这些以使用而不是让我们加密证书?
version: '3'
services:
consul-leader:
container_name: consul-leader
image: consul
command: agent -server -client=0.0.0.0 -bootstrap -ui
volumes:
- consul-data-leader:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}'
networks:
- default
- front-end
deploy:
labels:
- traefik.frontend.rule=Host:consul.domain.com
- traefik.port=8500
- traefik.docker.network=front-end
# Traefik service that listens to HTTP
- traefik.redirectorservice.frontend.entryPoints=http
- traefik.redirectorservice.frontend.redirect.entryPoint=https
# Traefik service that listens to HTTPS
- traefik.webservice.frontend.entryPoints=https
consul-replica:
container_name: consul-replica
image: consul
command: agent -server -client=0.0.0.0 -retry-join="consul-leader"
volumes:
- consul-data-replica:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}'
networks:
- default
- front-end
deploy:
replicas: 0
placement:
preferences:
- spread: node.id
traefik:
container_name: traefik
image: traefik:v1.7
ports:
- target: 80
published: 80
mode: host
- target: 443
published: 443
mode: host
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
preferences:
- spread: node.id
labels:
- traefik.frontend.rule=Host:traefik.domain.com
- traefik.port=8080
- traefik.docker.network=front-end
# Traefik service that listens to HTTP
- traefik.redirectorservice.frontend.entryPoints=http
- traefik.redirectorservice.frontend.redirect.entryPoint=https
# Traefik service that listens to HTTPS
- traefik.webservice.frontend.entryPoints=https
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /docker/ssl:/docker/ssl
command: >
--docker
--docker.swarmmode
--docker.watch
--docker.exposedbydefault=true
--entrypoints='Name:http Address::80'
--entrypoints='Name:https Address::443 TLS'
--consul
--consul.watch
--consul.endpoint="consul-leader:8500"
--acme
--acme.email=example@email.com
--acme.storage="traefik/acme/account"
--acme.entryPoint=https
--acme.httpChallenge.entryPoint=http
--acme.onhostrule=true
--acme.acmelogging=true
--logLevel=INFO
--accessLog
--api
networks:
- default
- front-end
depends_on:
- consul-leader
volumes:
consul-data-leader:
consul-data-replica:
networks:
front-end:
name: front-end
driver: overlay
【问题讨论】:
标签: ssl docker-compose docker-swarm traefik consul