RakudoContainerfileBuilder

Script to generate Containerfiles for Rakudo

Rakudo Containerfile Builder

A small script to build Containerfile s that can create Rakudo container images. Currently images are based on Alpine.

The resulting images have approximately the following sizes:

  • rakudo: 71MB

  • rakudo-zef: 280MB (also includes build tools required to install modules with native code)

  • rakudo-perl: 130MB (includes a Perl suitable for use with Inline::Perl5)

  • rakudo-zef-perl: 339MB (includes Zef and Perl)

Containers based on these are recommended to be Multi Stage d and use rakudo-zef in the build stage and a plain alpine (or rakudo-perl should a perl be necessary) in the final stage.

The following example Containerfile showcases that.

# BUILD STAGE #########################
FROM rakudo-zef:2020.12 AS build

RUN mkdir /app
WORKDIR /app

# Install deps separately first to not trash the podman cache on every
# source change.
COPY META6.json .
RUN zef install --deps-only .

# Now copy and compile the actual app.
COPY . .
RUN raku -c -I. service.raku

# FINAL STAGE #########################
FROM alpine:3.13.1

# Copy over app and Raku installation
COPY --from=build /app /app
COPY --from=build /usr/local /usr/local

WORKDIR /app

# Update path to make raku executables available
ENV PATH=$PATH:/usr/local/share/perl6/site/bin

ENV MY_APP_HOST="0.0.0.0" \
    MY_APP_PORT="10000"

EXPOSE 10000
CMD raku -I. service.raku

RakudoContainerfileBuilder v1.0.0

Script to generate Containerfiles for Rakudo

Authors

  • Patrick Böker

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • RakudoContainerfileBuilder::CLI

Documentation

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.