www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - DMD docker image

reply Jan =?UTF-8?B?SMO2bmln?= <hrominium gmail.com> writes:
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"
```
Jan 17 2020
next sibling parent reply Andre Pany <andre s-e-a-p.de> writes:
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
Jan 17 2020
parent reply Jan =?UTF-8?B?SMO2bmln?= <hrominium gmail.com> writes:
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!
Jan 18 2020
parent Andre Pany <andre s-e-a-p.de> writes:
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
Jan 18 2020
prev sibling parent Mathias Lang <pro.mathias.lang gmail.com> writes:
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
Jan 19 2020