From 2194c9b668d59b4db002b146b52005a7750a7d20 Mon Sep 17 00:00:00 2001 From: "mathieu.brunot" Date: Sat, 1 Jun 2019 16:49:32 +0200 Subject: [PATCH 1/2] :construction_worker: Add docker-compose & fix #51 --- .travis.yml | 15 +++++---- php-apache/docker-compose.yml | 36 ++++++++++++++++++++++ php-fpm/docker-compose.yml | 57 +++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 php-apache/docker-compose.yml create mode 100644 php-fpm/docker-compose.yml diff --git a/.travis.yml b/.travis.yml index 319a63e..ba0580d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,18 +11,17 @@ branches: before_script: - env | sort - - name="roundcubemail" - - image="roundcube/roundcubemail:${VERSION}${VARIANT:+-$VARIANT}" - dir="php-${VARIANT}" script: - - travis_retry docker build -t "$image" "$dir" - -after_script: + - cd "$dir" + - docker-compose build - docker images - - docker run --name "$name" -d "$image" "$dir" - - docker ps - - docker logs "$name" + - travis_retry docker-compose up -d && sleep 60 + - docker-compose ps + - docker-compose logs + - docker-compose ps "roundcubedb" | grep "Up" + - docker-compose ps "roundcube" | grep "Up" notifications: email: false diff --git a/php-apache/docker-compose.yml b/php-apache/docker-compose.yml new file mode 100644 index 0000000..276370d --- /dev/null +++ b/php-apache/docker-compose.yml @@ -0,0 +1,36 @@ +version: "2" + +services: + roundcube: + build: ./ + container_name: roundcube + #restart: always + depends_on: + - roundcubedb + links: + - roundcubedb + ports: + - 80:80 + volumes: + - /srv/roundcube/html:/var/www/html + environment: + - ROUNDCUBEMAIL_DB_TYPE=mysql + - ROUNDCUBEMAIL_DB_HOST=roundcubedb # same as mysql container name + - ROUNDCUBEMAIL_DB_NAME=roundcube # same as mysql MYSQL_DATABASE env name + - ROUNDCUBEMAIL_DB_USER=roundcube # same as mysql MYSQL_USER env name + - ROUNDCUBEMAIL_DB_PASSWORD=roundcubedbpass # same as mysql MYSQL_PASSWORD env name + + roundcubedb: + image: mariadb:latest + container_name: roundcubedb + restart: always + command: --character_set_client=utf8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --character-set-client-handshake=FALSE + ports: + - 3306:3306 + volumes: + - /srv/roundcube/db:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=mysqlrootpassword + - MYSQL_DATABASE=roundcube + - MYSQL_USER=roundcube + - MYSQL_PASSWORD=roundcubedbpass diff --git a/php-fpm/docker-compose.yml b/php-fpm/docker-compose.yml new file mode 100644 index 0000000..e9b084a --- /dev/null +++ b/php-fpm/docker-compose.yml @@ -0,0 +1,57 @@ +version: "2" + +services: + roundcube: + build: ./ + container_name: roundcube + #restart: always + depends_on: + - roundcubedb + links: + - roundcubedb + ports: + - 9000:9000 + volumes: + - /srv/roundcube/html:/var/www/html + environment: + - ROUNDCUBEMAIL_DB_TYPE=pgsql + - ROUNDCUBEMAIL_DB_HOST=roundcubedb # same as pgsql container name + - ROUNDCUBEMAIL_DB_NAME=roundcube # same as pgsql POSTGRES_DB env name + - ROUNDCUBEMAIL_DB_USER=roundcube # same as pgsql POSTGRES_USER env name + - ROUNDCUBEMAIL_DB_PASSWORD=roundcube # same as pgsql POSTGRES_PASSWORD env name + + roundcubedb: + image: postgres:latest + container_name: roundcubedb + restart: always + ports: + - 5432:5432 + volumes: + - /srv/roundcube/db:/var/lib/postgresql/data + environment: + - POSTGRES_DB=roundcube + - POSTGRES_USER=roundcube + - POSTGRES_PASSWORD=roundcube + + roundcubenginx: + image: nginx:latest + container_name: roundcubenginx + restart: always + ports: + - 80:80 + # If you need SSL connection + # - '443:443' + depends_on: + - roundcube + links: + - roundcube + volumes: + - /srv/roundcube/html:/var/www/html + # TODO Provide a custom nginx conf + #- ./nginx.conf:/etc/nginx/nginx.conf:ro + # If you need SSL connection, you can provide your own certificates + # - ./certs:/etc/letsencrypt + # - ./certs-data:/data/letsencrypt + environment: + - NGINX_HOST=localhost # set your local domain or your live domain + # - NGINX_CGI=roundcube:9000 # same as roundcube container name From 8da54a957f1495170870d8053db95446ea68e125 Mon Sep 17 00:00:00 2001 From: "mathieu.brunot" Date: Thu, 6 Jun 2019 10:27:37 +0200 Subject: [PATCH 2/2] :bulb: Add sample docker mail server --- php-apache/docker-compose.yml | 45 +++++++++++++++++++++++++++++++++++ php-fpm/docker-compose.yml | 45 +++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/php-apache/docker-compose.yml b/php-apache/docker-compose.yml index 276370d..d164892 100644 --- a/php-apache/docker-compose.yml +++ b/php-apache/docker-compose.yml @@ -34,3 +34,48 @@ services: - MYSQL_DATABASE=roundcube - MYSQL_USER=roundcube - MYSQL_PASSWORD=roundcubedbpass + + # Sample mail server to use with RoundCube: https://github.com/tomav/docker-mailserver +# mailserver: +# image: tvial/docker-mailserver:latest +# hostname: mail +# domainname: +# container_name: mail +# restart: always +# ports: +# # receiving email from other mailservers +# - "25:25" +# # SSL & TLS Client email submission (SMTP) +# - "465:465" +# - "587:587" +# # StartTLS & TLS/SSL IMAP client +# - "143:143" +# - "993:993" +# # POP3 & TLS/SSL POP3 client +# - "110:110" +# - "995:995" +# # Manage Sieve port +# - "4190:4190" +# environment: +# - DMS_DEBUG=0 +# - ONE_DIR=1 +# - ENABLE_CLAMAV=1 +# - ENABLE_FAIL2BAN=1 +# - ENABLE_POSTGREY=1 +# - ENABLE_MANAGESIEVE=1 +# # If you need SSL connection, you can provide your own certificates +# #- SSL_TYPE=manual +# #- SSL_CERT_PATH=/etc/letsencrypt/fullchain.pem +# #- SSL_KEY_PATH=/etc/letsencrypt/privkey.pem +# cap_add: +# - NET_ADMIN +# - SYS_PTRACE +# volumes: +# - /srv/mail/data:/var/mail +# - /srv/mail/state:/var/mail-state +# # For proper delivery, generate DKIM keys in /srv/mail/setup +# - /srv/mail/setup:/tmp/docker-mailserver +# - /etc/localtime:/etc/localtime:ro +# - /etc/timezone:/etc/timezone:ro +# # If you need SSL connection, you can provide your own certificates +# # - ./certs:/etc/letsencrypt diff --git a/php-fpm/docker-compose.yml b/php-fpm/docker-compose.yml index e9b084a..dac7526 100644 --- a/php-fpm/docker-compose.yml +++ b/php-fpm/docker-compose.yml @@ -55,3 +55,48 @@ services: environment: - NGINX_HOST=localhost # set your local domain or your live domain # - NGINX_CGI=roundcube:9000 # same as roundcube container name + + # Sample mail server to use with RoundCube: https://github.com/tomav/docker-mailserver +# mailserver: +# image: tvial/docker-mailserver:latest +# hostname: mail +# domainname: +# container_name: mail +# restart: always +# ports: +# # receiving email from other mailservers +# - "25:25" +# # SSL & TLS Client email submission (SMTP) +# - "465:465" +# - "587:587" +# # StartTLS & TLS/SSL IMAP client +# - "143:143" +# - "993:993" +# # POP3 & TLS/SSL POP3 client +# - "110:110" +# - "995:995" +# # Manage Sieve port +# - "4190:4190" +# environment: +# - DMS_DEBUG=0 +# - ONE_DIR=1 +# - ENABLE_CLAMAV=1 +# - ENABLE_FAIL2BAN=1 +# - ENABLE_POSTGREY=1 +# - ENABLE_MANAGESIEVE=1 +# # If you need SSL connection, you can provide your own certificates +# #- SSL_TYPE=manual +# #- SSL_CERT_PATH=/etc/letsencrypt/fullchain.pem +# #- SSL_KEY_PATH=/etc/letsencrypt/privkey.pem +# cap_add: +# - NET_ADMIN +# - SYS_PTRACE +# volumes: +# - /srv/mail/data:/var/mail +# - /srv/mail/state:/var/mail-state +# # For proper delivery, generate DKIM keys in /srv/mail/setup +# - /srv/mail/setup:/tmp/docker-mailserver +# - /etc/localtime:/etc/localtime:ro +# - /etc/timezone:/etc/timezone:ro +# # If you need SSL connection, you can provide your own certificates +# # - ./certs:/etc/letsencrypt