This is a Docker image based on alpine
that adds my essential tools to build perl projects.
This includes:
Some common *-dev libs are also included:
- openssl-dev: allows install of Net::SSLeay;
- zlib-dev: for Gzip::Faster;
- expat-dev: for all Expat-based XML parsers;
- libxml2-dev: allows install of XML::LibXML and friends.
My usual project Dockerfile
uses this image as the first stage, to build the application. The resulting files are then copied over to a new image, using Docker multi-stage builds.
An example:
FROM melopt/alpine-perl-devel AS build
## Add any extra build time libs that you might need
## RUN apk --no-cache add <build-time-needed-packages>
COPY cpanfile* /app/
RUN cd /app && build-perl-deps
FROM melopt/alpine-perl-runtime
## Add libs and utils that your app might need during runtime
## RUN apk --no-cache add <runtime-needed-packages>
COPY --from=build /app /app
CMD ["your-app-startup"]
Enjoy your small Perl project images.
A utility script is included, build-perl-deps
, that checks
the current directory for a cpanfile
and optionally
for a cpanfile.snapshot
.
If found, it will use Carton to install your dependencies.
If all goes well, it will cleanup build and cache files to keep your images small.
If an error is detected during the build process, a second
install is attempted, with--verbose
and if the second one
also fails, the content of the ´cpanm
build.log` file is printed.
This image source repository is at https://github.com/melo/docker-alpine-perl-devel.
Pedro Melo melo@simplicidade.org