cyrusimap / cyrus-imapd

Cyrus IMAP is an email, contacts and calendar server
http://cyrusimap.org
Other
544 stars 149 forks source link

official docker image #3015

Open sstubbs opened 4 years ago

sstubbs commented 4 years ago

Hi,

Now with version 3.2 in beta is there a way of providing an official docker image for Cyrus?

It would be really great to be have an image that is used and tested by many people. I'm happy to help with maintaining it if needed. Please see https://github.com/cyrusimap/cyrus-docker/issues/3

sstubbs commented 4 years ago

An official salsauthd image would also great.

ghost commented 4 years ago

its pretty simple to do but you're gonna run into problems: https://github.com/cyrusimap/cyrus-imapd/issues/3082

but mine just looks like this:

cat cyrus/Dockerfile
FROM ubuntu:devel
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y install cyrus-admin cyrus-caldav cyrus-clients cyrus-common cyrus-dev cyrus-doc cyrus-imapd \
cyrus-imspd cyrus-murder cyrus-nntpd cyrus-pop3d cyrus-replication libsasl2-modules-sql sasl2-bin signon-plugin-sasl libsasl2-modules-db libsasl2-modules libsasl2-2 libsasl2-modules-otp \
libsasl2-modules-ldap libsasl2-modules-gssapi-mit gsasl strace
ghost commented 4 years ago

syslog() is used extensively throughout the entire thing. The problem isn't that you can't run rsyslog in a container, it's just really counter intuitive but postfix is another example of one that has a dependency on rsyslog which I have a container built for and to accomplish running multiple processes inside of the container I just use supervisord. I'd obviously rather use cyrmaster as the container process supervisor and it's practically good for it but, syslog() is used everywhere and doesn't log to cyrmaster apparently. http://manpages.ubuntu.com/manpages/xenial/man8/cyrmaster.8.html it's a shame but what can you do.

ghost commented 4 years ago

you're welcome to borrow my docker file which I've used to setup a murder cluster

https://github.com/0x00002152/netwerk/tree/master/postfix https://github.com/0x00002152/netwerk/tree/master/murder/mupdate https://github.com/0x00002152/netwerk/tree/master/murder/be https://github.com/0x00002152/netwerk/tree/master/mailserver

the vol_create script will show you how to create volumes (what data should be persistent) but it in and of itself won't do you much good unless you're setting this up from the start (the readme.md in the root of the project explains it if you're interested.) I just started adding that script for containers so I haven't documented it yet but you need to build the container images first with docker-compose build before running vol_create. I didn't like the way docker-compose handled volumes in any of the versions, so I ended up going this route, which works out okay for me.

they each start in that order, you have to run docker exec -it mupdate_mupdate_1 saslpasswd2 -c postman after you start mupdate, then you can start be, I haven't finished adding documentation for it. You probably just want to borrow from that though, but I've tried to avoid making a crufty solution as much as possible. I really hate using stuff like supervisord & rsyslogd for containers but sometimes it's necessary but regardless I tried to do it sensibly so that there's not a lot of mess. It seems to be mostly working, it pushes updates I haven't really gotten a chance to test to see if its REALLY working but I'm pretty sure it's not far off and I went based on the configuration provided in this source tree's examples directory.

arnegroskurth commented 1 year ago

push

Is there any statement from the maintainers about this?

I feel like this is quite important and would make cyrus much more usable.

dilyanpalauzov commented 1 year ago

The maintainers provide Cyrus IMAP only as source code.