| 1 | ## Usage: |
| 2 | ## 1) docker build -t vlang_alpine - < Dockerfile.alpine |
| 3 | ## 2) alias with_alpine='docker run -u 1000:1000 --rm -it -v .:/src -w /src vlang_alpine:latest' |
| 4 | FROM alpine:3.23.3 |
| 5 | LABEL maintainer="spytheman <[email protected]>" |
| 6 | WORKDIR /opt/vlang |
| 7 | ENV PATH=/opt/vlang:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| 8 | |
| 9 | ## install development packages |
| 10 | RUN apk --no-cache add \ |
| 11 | musl-dev libc-dev libc6-compat gcompat \ |
| 12 | openssl-dev sqlite-dev mbedtls \ |
| 13 | libuv-dev libev-dev libevent-dev libmemcached-dev \ |
| 14 | binutils diffutils elfutils pcre strace rsync \ |
| 15 | libunwind-dev libunwind-static gc gc-dev \ |
| 16 | make bash file git upx tmux micro nano nano-syntax \ |
| 17 | gcc gdb wasi-sdk \ |
| 18 | mesa-dev mesa-gl mesa-gles \ |
| 19 | glfw-dev \ |
| 20 | glu-dev \ |
| 21 | glew-dev \ |
| 22 | freetype-dev \ |
| 23 | freeglut-dev \ |
| 24 | libxi-dev libxi-static \ |
| 25 | libxcursor-dev \ |
| 26 | libx11-dev \ |
| 27 | icu-data-full \ |
| 28 | sdl2_net-dev \ |
| 29 | sdl2_gfx-dev \ |
| 30 | sdl2_ttf-dev \ |
| 31 | sdl2_image-dev \ |
| 32 | sdl2_mixer-dev \ |
| 33 | sdl2_pango-dev \ |
| 34 | sdl2-dev |
| 35 | |
| 36 | RUN ln -s /opt/vlang/v /usr/local/bin/v |
| 37 | COPY . /vlang-local |
| 38 | ARG USE_LOCAL |
| 39 | RUN if [[ -z "${USE_LOCAL}" ]] ; then \ |
| 40 | git clone --depth=1 --quiet https://github.com/vlang/v/ /opt/vlang && \ |
| 41 | rm -rf /vlang-local ; \ |
| 42 | else \ |
| 43 | mv /vlang-local/* . && \ |
| 44 | rm -rf /vlang-local ; \ |
| 45 | fi |
| 46 | RUN mkdir -p /tmp/v /tmp/v /home/ && chown -Rh 1000:1000 /opt/ /tmp/ /home/ |
| 47 | ## setup runtime environment for v and bash: |
| 48 | USER 1000:1000 |
| 49 | ENV HOME=/home |
| 50 | ENV VTMP=/tmp/v |
| 51 | ENV VMODULES=/tmp/vmodules |
| 52 | |
| 53 | RUN make && v -version && ls -la v && \ |
| 54 | du -b -s . && \ |
| 55 | time v doctor && \ |
| 56 | time v cmd/tools/vfmt.v && \ |
| 57 | time v -prod self && \ |
| 58 | true |
| 59 | RUN find . -type f -name *_test.v -or -name *.vv -or -name *.out | xargs rm && \ |
| 60 | rm -rf v_old vc/ .git/ && \ |
| 61 | du -b -s . |
| 62 | CMD ["v"] |
| 63 | |