一個好網站
http://www.codeconcepts.eu/#wizard
給一些資料就有 Docker 檔案下載了
config
Dockerfile
start_build.sh
start_iredmail.sh
來分析一下檔案
Dockerfile ....這看是固定的
FROM phusion/baseimage:latest
MAINTAINER Robert (robert@nigma.org)
EXPOSE 25 53/udp 53/tcp 80 110 143 389 443 587 636 993 995 2000 3306 10024 10025 10031
VOLUME /var/vmail
# Update system packages.
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install wget bzip2
# Download and extract iredmail
RUN DEBIAN_FRONTEND=noninteractive wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.5-1.tar.bz2 -O iredmail.tar.bz2
RUN DEBIAN_FRONTEND=noninteractive mkdir /iredmail
RUN DEBIAN_FRONTEND=noninteractive tar -xvf iredmail.tar.bz2 -C iredmail/ --strip-components=1
# Receive the config and the docker start script
COPY ./config /iredmail/config
COPY ./start_iredmail.sh /iredmail/start_iredmail.sh
RUN DEBIAN_FRONTEND=noninteractive chmod +x /iredmail/start_iredmail.sh
# Start installation or services when container is started
config....這是輸入的資訊轉換的 ...PASSWD --> P@ssw0rd
export VMAIL_USER_HOME_DIR='/var/vmail'
export STORAGE_BASE_DIR='/var/vmail'
export STORAGE_MAILBOX_DIR='/var/vmail/vmail1'
export SIEVE_DIR='/var/vmail/sieve'
export BACKUP_DIR='/var/vmail/backup'
export BACKUP_SCRIPT_OPENLDAP='/var/vmail/backup/backup_openldap.sh'
export BACKUP_SCRIPT_MYSQL='/var/vmail/backup/backup_mysql.sh'
export BACKUP_SCRIPT_PGSQL='/var/vmail/backup/backup_pgsql.sh'
export WEB_SERVER_IS_NGINX='YES'
export WEB_SERVER_IS_APACHE='NO'
export BACKEND_ORIG='MYSQL'
export BACKEND='MYSQL'
export VMAIL_DB_BIND_PASSWD='mmujWEQaNU2lZoYOJ7sop683JTtHR6'
export VMAIL_DB_ADMIN_PASSWD='d5ixb52S3EARQq6C3DyiPMbMEKtXfb'
export LDAP_BINDPW='Ti4ZF5RwKIZ0nFnh6fKsnp5oZyWjm2'
export LDAP_ADMIN_PW='i40bQC4xYC4LBheOoaRWs50mgWK16U'
export MYSQL_ROOT_PASSWD='P@ssw0rd'
export MYSQL_ROOT_USER='root'
export SQL_SERVER_ADDRESS='127.0.0.1'
export SQL_SERVER_PORT='3306'
export FIRST_DOMAIN='test.duckdns.org'
export DOMAIN_ADMIN_NAME='postmaster'
export SITE_ADMIN_NAME='postmaster@test.duckdns.org'
export DOMAIN_ADMIN_PASSWD_PLAIN='P@ssw0rd'
export DOMAIN_ADMIN_PASSWD='P@ssw0rd'
export SITE_ADMIN_PASSWD='P@ssw0rd'
export FIRST_USER='postmaster'
export FIRST_USER_PASSWD='P@ssw0rd'
export FIRST_USER_PASSWD_PLAIN='P@ssw0rd'
export USE_IREDADMIN='YES'
export USE_RCM='YES'
export USE_AWSTATS='YES'
export USE_FAIL2BAN='YES'
export AMAVISD_DB_PASSWD='PdNMcre7P1wGCVNGxZEeJW7I7avF1o'
export IREDADMIN_DB_PASSWD='nDqZfsghmT8Gqxr43ORwQqhMXbKgGy'
export RCM_DB_PASSWD='uU2IJ72Pdbz0INuXEmAlHgAORnPrrk'
export SOGO_DB_PASSWD='QL3FkBA0eB9BAEeVqH6QSCUgeBtURK'
export SOGO_SIEVE_MASTER_PASSWD='3vkU1sjqpnSlNgQPZ5mVK4nu0sUraB'
#EOF[root@test iredmail.docker.script]#
start_iredmail.sh .....這是固定的
用來判斷是否有安裝 ireadmail , 沒有就安裝, 有就啟動服務
#!/bin/bash
file="/iredmail/docker.build.completed"
if [ -f "$file" ]
then
echo "$file found."
echo "Starting iredmail services"
service syslog-ng restart
service php5-fpm restart
service cron restart
service mysql restart
service amavis restart
service nginx restart
#service dovecot restart - doesn't exist on ubuntu 14 anymore?
#service iptables restart - no need as docker proxy with expose ports are protecting?
service ssh restart
rm -rf /var/run/fail2ban/fail2ban.sock
service fail2ban restart
service iredapd restart
service postfix restart
#service postfix-cluebringer restart
rm -rf /run/uwsgi/app/iredadmin/socket
rm -rf /var/run/uwsgi_iredadmin.socket
service uwsgi restart
rm -rf /var/run/dovecot/master.pid
dovecot
#rm -rf /tmp/clamd.socket
service clamav-daemon restart
service clamav-freshclam restart
cat > /dev/null
else
echo "$file not found."
echo "Installning iredmail"
AUTO_USE_EXISTING_CONFIG_FILE=y \
AUTO_INSTALL_WITHOUT_CONFIRM=y \
AUTO_CLEANUP_REMOVE_SENDMAIL=y \
AUTO_CLEANUP_REMOVE_MOD_PYTHON=y \
AUTO_CLEANUP_REPLACE_FIREWALL_RULES=y \
AUTO_CLEANUP_RESTART_IPTABLES=y \
AUTO_CLEANUP_REPLACE_MYSQL_CONFIG=y \
AUTO_CLEANUP_RESTART_POSTFIX=n \
bash /iredmail/iRedMail.sh
touch /iredmail/docker.build.completed
./iredmail/start_iredmail.sh
fi
start_build.sh ....這是固定的 ...
我有改 加 ip 進去 ...沒有加我的機器會跑 ipv6
docker build --no-cache -t iredmail-installer .
docker run -d -h dingyue.duckdns.org --name iredmail-container -t -p 192.168.0.70:25:25 -p 192.168.0.70:80:80 -p 192.168.0.70:110:110 -p 192.168.0.70:143:143 -p 192.168.0.70:443:443 -p 192.168.0.70:587:587 -p 192.168.0.70:993:993 -p 192.168.0.70:995:995 iredmail-installer