Thread overview
DMD docker image
Jan 17, 2020
Jan Hönig
Jan 17, 2020
Andre Pany
Jan 18, 2020
Jan Hönig
Jan 18, 2020
Andre Pany
Jan 19, 2020
Mathias Lang
January 17, 2020
I have created a docker image.
However the image size is not small (~500MB).
I wonder if others have a suitable dockerfile.
All i want is to install the current dmd release.

Does somebody have something similar?
Does somebody need something similar?

My dockerfile:

```
FROM ubuntu:latest
MAINTAINER Jan Hönig <jan.hoenig@fau.de>

RUN apt-get update &&  apt-get install curl build-essential -y \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*

RUN latest=$(curl -sS http://downloads.dlang.org/releases/LATEST) \
  && echo "DMD Release: $latest" \\
  && curl "http://downloads.dlang.org/releases/2020/dmd_${latest}-0_amd64.deb" -o dmd.deb \
  && dpkg -i "dmd.deb" \
  && rm "dmd.deb"
```
January 17, 2020
On Friday, 17 January 2020 at 16:43:17 UTC, Jan Hönig wrote:
> I have created a docker image.
> However the image size is not small (~500MB).
> I wonder if others have a suitable dockerfile.
> All i want is to install the current dmd release.
>
> Does somebody have something similar?
> Does somebody need something similar?
>
> My dockerfile:
>
> ```
> FROM ubuntu:latest
> MAINTAINER Jan Hönig <jan.hoenig@fau.de>
>
> RUN apt-get update &&  apt-get install curl build-essential -y \
>  && apt-get clean \
>  && rm -rf /var/lib/apt/lists/*
>
> RUN latest=$(curl -sS http://downloads.dlang.org/releases/LATEST) \
>   && echo "DMD Release: $latest" \\
>   && curl "http://downloads.dlang.org/releases/2020/dmd_${latest}-0_amd64.deb" -o dmd.deb \
>   && dpkg -i "dmd.deb" \
>   && rm "dmd.deb"
> ```

If you really need small images, you could switch to Alpine, but MUSL c could lead to headaches ;)

There are also the official docker images https://hub.docker.com/u/dlang2

What is your goal? Do you want to compile s.th. in your docker image? Then you can have a layered docker file to reduce the size.

Kind regards
Andre
January 18, 2020
On Friday, 17 January 2020 at 17:31:29 UTC, Andre Pany wrote:
> If you really need small images, you could switch to Alpine, but MUSL c could lead to headaches ;)
>
> There are also the official docker images https://hub.docker.com/u/dlang2
>
> What is your goal? Do you want to compile s.th. in your docker image? Then you can have a layered docker file to reduce the size.
>
> Kind regards
> Andre

I just wanted to know, whether i am doing something completely wrong.
Oh i haven't found these docker images. I did only search for "dlang" not "dlang2".
Thanks a lot!
January 18, 2020
On Saturday, 18 January 2020 at 13:58:01 UTC, Jan Hönig wrote:
> On Friday, 17 January 2020 at 17:31:29 UTC, Andre Pany wrote:
>> If you really need small images, you could switch to Alpine, but MUSL c could lead to headaches ;)
>>
>> There are also the official docker images https://hub.docker.com/u/dlang2
>>
>> What is your goal? Do you want to compile s.th. in your docker image? Then you can have a layered docker file to reduce the size.
>>
>> Kind regards
>> Andre
>
> I just wanted to know, whether i am doing something completely wrong.
> Oh i haven't found these docker images. I did only search for "dlang" not "dlang2".
> Thanks a lot!

You might also use debian:slim as base image, which might reduce the size.

Kind regards
Andre
January 19, 2020
On Friday, 17 January 2020 at 16:43:17 UTC, Jan Hönig wrote:
> I have created a docker image.
> However the image size is not small (~500MB).
> I wonder if others have a suitable dockerfile.
> All i want is to install the current dmd release.
>
> Does somebody have something similar?
> Does somebody need something similar?
>
> My dockerfile:
>
> ```
> FROM ubuntu:latest
> MAINTAINER Jan Hönig <jan.hoenig@fau.de>
>
> RUN apt-get update &&  apt-get install curl build-essential -y \
>  && apt-get clean \
>  && rm -rf /var/lib/apt/lists/*
>
> RUN latest=$(curl -sS http://downloads.dlang.org/releases/LATEST) \
>   && echo "DMD Release: $latest" \\
>   && curl "http://downloads.dlang.org/releases/2020/dmd_${latest}-0_amd64.deb" -o dmd.deb \
>   && dpkg -i "dmd.deb" \
>   && rm "dmd.deb"
> ```

If you want a small image, Alpine Linux is definitely the way to go.
You can find `gcc-gdc` (however it's an old frontend, v2.076) in Alpine Linux's main repository.

Additionally, if you can find the latest `ldc` in the `testing` repository (https://forum.dlang.org/thread/oznltcuropwzxaakptdy@forum.dlang.org).

I intend to add DMD, just didn't have to get to it yet. If you want to do it yourself, here's the APKBUILD: https://gitlab.alpinelinux.org/alpine/aports/merge_requests/2880