It seems that the docker images are largeish at least 500mb or more. I compared my habitat-ized Tomcat with the docker hub’s Tomcat:
bdangit/tomcat 8.0.36-20160726172516 592.7 MB
tomcat 8.0.36-jre8-alpine 134.6 MB
Am I building my docker containers wrong?
No, you aren’t building them wrong. The major difference is the choice of libc - alpine uses musl, which is significantly smaller than glibc, at the cost of ease of compilation for the common case. A closer comparable would be
tomcat:8.0.36-jre8, which uses glibc. That image comes in at 336MB.
Looking at your deps, you depend on both
jdk8. Most likely you don’t need the
jdk, but instead the
jre - it looks like nobody has packaged the JRE yet. You probably don’t need ant, either.
Thanks @adam! You are right. I did the suggestions you stated; and was able to get a binary that is
361.4MB (slightly larger by
30MB but getting closer).
I moved the
jdk as build dependencies as they are required for building tomcat from source. Actual dependencies is blank. In order to get
core/jdk8 includes the
jre directory so I moved that into my packaging. But I have other issues, where I am able to run
hab start bdangit/tomcat inside the studio and it will work; however outside in docker it won’t work as it appears I’m missing some of the shared libraries.
tomcat(O): /hab/pkgs/bdangit/tomcat/8.0.36/20160726221441/jre/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
Sounds like I’ll just have to make a hab package for