2017-04-25 72 views
0

我拉https://github.com/tomav/docker-mailserver設置郵件服務器。 我想補充咱們的加密支持,所以我拉得https://hub.docker.com/r/certbot/certbot/~/dockerfile/郵件服務器docker with certbot

我做碼頭工人,撰寫文件,這2個容器:

version: '2' 
services: 
nginx: 
image: pixelfordinner/nginx 
container_name: pixelcloud-nginx_proxy-nginx 
restart: always 
ports: 
    - "80:80" 
    - "443:443" 
volumes: 
    - "./volumes/conf.d:/etc/nginx/conf.d:ro" 
    - "./volumes/vhost.d:/etc/nginx/vhost.d:ro" 
    - "./volumes/certs:/etc/nginx/certs:ro" 
    - "/usr/share/nginx/html" 
nginx-proxy: 
image: jwilder/docker-gen 
container_name: nginx-proxy 
depends_on: 
    - nginx 
volumes_from: 
    - nginx 
volumes: 
    - "/var/run/docker.sock:/tmp/docker.sock:ro" 
    - "./data/templates:/etc/docker-gen/templates:ro" 
    - "./volumes/conf.d:/etc/nginx/conf.d:rw" 
entrypoint: /usr/local/bin/docker-gen -notify-sighup pixelcloud-nginx_proxy-nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf 

letsencrypt-nginx-proxy: 
restart: always 
image: jrcs/letsencrypt-nginx-proxy-companion 
container_name: ssl 
depends_on: 
    - nginx 
    - nginx-proxy 
volumes_from: 
    - nginx 
volumes: 
    - "/var/run/docker.sock:/var/run/docker.sock:ro" 
    - "./volumes/vhost.d:/etc/nginx/vhost.d:rw" 
    - "./volumes/certs:/etc/nginx/certs:rw" 
environment: 
    - "NGINX_DOCKER_GEN_CONTAINER=nginx-proxy" 
mail: 
image: tvial/docker-mailserver:2.1 
hostname: mail 
domainname: example.com 
container_name: mail 
ports: 
- "25:25" 
- "143:143" 
- "587:587" 
- "993:993" 
volumes: 
- maildata:/var/mail 
- mailstate:/var/mail-state 
- ./config/:/tmp/docker-mailserver/ 
- "$PWD/etc/:/etc/letsencrypt/" 
- "$PWD/log/:/var/log/letsencrypt/" 
environment: 
- ENABLE_SPAMASSASSIN=1 
- ENABLE_CLAMAV=1 
- ENABLE_FAIL2BAN=1 
- ENABLE_POSTGREY=1 
- ONE_DIR=1 
- DMS_DEBUG=0 
- SSL_TYPE=letsencrypt 
cap_add: 
- NET_ADMIN 
certbot: 
image: certbot/certbot 
container_name: certbot 
command: certbot certonly --standalone -d mail.example.com 
ports: 
- "8083:80" 
- "4432:443" 
volumes: 
    - /etc/letsencrypt:/etc/letsencrypt 
    - /var/lib/letsencrypt:/var/lib/letsencrypt 

但certbot不會產生任何證書。 nginx和certbot容器與443端口之間存在衝突。

如果我使用443端口作爲certbot,我的域名不可訪問,所以certbot域名驗證失敗。 如果我使用443作爲nginx,certbot不起作用。 我不知道該怎麼做...

回答

0

讓我們加密(certbot)需要現有的tld,它可以通過端口80訪問,以實際執行某些操作。您需要創建一些像dev.existingdomain.com這樣的真實域名並使用它。

https://typo3worx.eu/2016/11/lets-encrypt-on-localhost/

對於本地環境,您主要是使用自簽名的證書......

+0

我有一個真實的域名與網站。我也有一個用於webmail的子域。所以我需要certbot爲smtp創建一個ssl證書 – Vana

+0

所以這條線只是例子嗎? certbot certonly --standalone -d mail.example.com – barat

+0

我將mail.example.com替換爲我的域名 – Vana