Compare commits

..

2 commits

Author SHA1 Message Date
1205933acd
Update images and reduce their size (#13)
* Allow container to be run with custom command

* Reduce language image sizes

* Update OpenJDK to latest version

* Use swc for TypeScript and don't print by default

* Update Haskell image and use stable Debian slim

* Fix formatting and revert TS changes
2021-05-31 00:20:21 -04:00
e54e191f1b
Check if image exists before building (#12) 2021-05-20 23:53:13 -04:00
18 changed files with 33 additions and 113 deletions

View file

@ -34,4 +34,4 @@ COPY --from=build /opt/myriad .
EXPOSE 8081 EXPOSE 8081
CMD ["./myriad"] ENTRYPOINT ["./myriad"]

View file

@ -16,4 +16,4 @@ COPY --from=build /tmp/myriad .
EXPOSE 8081 EXPOSE 8081
CMD ["./myriad"] ENTRYPOINT ["./myriad"]

View file

@ -1,9 +0,0 @@
FROM openjdk:17-alpine
LABEL author="SunRed"
RUN apk add --no-cache curl && \
curl -O http://lhartikk.github.io/ArnoldC.jar && \
mv ArnoldC.jar /var/run && \
apk del --no-cache curl
COPY run.sh /var/run/

View file

@ -1,2 +0,0 @@
cat > program.arnoldc
java -jar /var/run/ArnoldC.jar program.arnoldc && java program

View file

@ -1,12 +1,12 @@
FROM alpine AS build FROM alpine AS build
RUN apk update && apk add g++
COPY bf.cpp . COPY bf.cpp .
RUN g++ bf.cpp -o bf RUN apk add --no-cache g++ && \
g++ bf.cpp -o bf
FROM alpine FROM alpine
LABEL author="1Computer1" LABEL author="1Computer1"
RUN apk update && apk add libstdc++ RUN apk add --no-cache libstdc++
COPY --from=build bf /usr/local/bin/ COPY --from=build bf /usr/local/bin/
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -1,7 +1,6 @@
FROM alpine FROM alpine
LABEL author="1Computer1" LABEL author="1Computer1"
RUN apk update RUN apk add --no-cache gcc libc-dev
RUN apk add gcc libc-dev
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -1,7 +1,6 @@
FROM alpine FROM alpine
LABEL author="1Computer1" LABEL author="1Computer1"
RUN apk update RUN apk add --no-cache g++
RUN apk add g++
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -1,57 +0,0 @@
FROM debian:stable-slim as build
ENV CC clang-8
ENV CXX clang++-8
ENV DEBIAN_FRONTEND=nontinteractive
ENV PYTHONIOENCODING utf8
RUN \
apt-get update && \
apt-get install -y \
gnupg \
wget && \
echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main" >> /etc/apt/sources.list && \
echo "deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main" >> /etc/apt/sources.list && \
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add - && \
apt-get update && \
apt-get install -y \
clang-8 \
cmake \
libstdc++-8-dev \
libclang1-8 \
libclang-8-dev \
libclang-common-8-dev \
libfuzzer-8-dev \
libllvm8 \
libncurses-dev \
libz-dev \
llvm-8 \
llvm-8-dev \
llvm-runtime \
ninja-build \
python3 \
rsync \
git && \
rm -rf /var/lib/apt/lists/* && \
mkdir /tmp/emojicode/
WORKDIR /tmp/emojicode/
RUN git clone https://github.com/emojicode/emojicode.git .
RUN cmake . -GNinja && \
ninja && \
ninja magicinstall
FROM debian:stable-slim
LABEL author="SunRed"
ENV CXX=g++
RUN apt-get update && \
apt-get install -y ${CXX} && \
apt-get autoremove -y && \
apt-get autoclean -y
COPY --from=build /usr/local/bin /usr/local/bin
COPY --from=build /usr/local/EmojicodePackages /usr/local/EmojicodePackages
COPY run.sh /var/run/

View file

@ -1,2 +0,0 @@
cat > program.emojic
emojicodec program.emojic -o program && ./program

View file

@ -1,14 +1,17 @@
FROM debian:stretch FROM debian:stable-slim
LABEL author="1Computer1" LABEL author="1Computer1"
ENV LANG C.UTF-8 ENV LANG C.UTF-8
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends gnupg dirmngr && \ apt-get install -y --no-install-recommends gnupg dirmngr ca-certificates && \
echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \ echo 'deb https://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574 && \ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574 && \
apt-get update && \ apt-get update && \
apt-get install -y --no-install-recommends ghc-8.6.5 apt-get install -y --no-install-recommends ghc-9.0.1 && \
apt-get purge -y gnupg dirmngr ca-certificates && \
apt-get autoremove -y && \
apt-get autoclean -y
ENV PATH /opt/ghc/8.6.5/bin:$PATH ENV PATH /opt/ghc/9.0.1/bin:$PATH
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -2,6 +2,7 @@ FROM alpine:latest
RUN echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ RUN echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \
apk update && \ apk update && \
apk add idris@testing apk add idris@testing && \
rm -rf /var/cache/apk/*
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -1,4 +1,4 @@
FROM openjdk:13-alpine FROM openjdk:17-alpine
LABEL author="1Computer1" LABEL author="1Computer1"
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -1 +1 @@
cat | node -p cat | node

View file

@ -1,15 +0,0 @@
FROM alpine as build
RUN apk add --no-cache build-base git cmake
WORKDIR /tmp/lci
RUN git clone https://github.com/justinmeza/lci.git .
RUN cmake . && make
FROM alpine
LABEL author="SunRed"
COPY --from=build /tmp/lci/lci /usr/local/bin
COPY run.sh /var/run/

View file

@ -1,2 +0,0 @@
cat > program.lol
lci program.lol

View file

@ -1,6 +1,5 @@
FROM alpine FROM alpine
RUN apk update RUN apk add --no-cache lua5.3
RUN apk add lua5.3
COPY run.sh /var/run/ COPY run.sh /var/run/

View file

@ -1,4 +1,4 @@
cat > program.ts cat > program.ts
tsc --lib DOM,ESNext --target ES2019 --strict \ tsc --lib DOM,ESNext --target ES2019 --strict \
--skipLibCheck --types /usr/local/share/.config/yarn/global/node_modules/@types/node program.ts \ --skipLibCheck --types /usr/local/share/.config/yarn/global/node_modules/@types/node program.ts \
&& cat program.js | node -p && cat program.js | node

View file

@ -40,10 +40,16 @@ data EvalResult
buildImage :: Language -> Myriad () buildImage :: Language -> Myriad ()
buildImage lang = do buildImage lang = do
env <- ask env <- ask
logInfo ["Checking for image ", cs $ imageName lang]
res <- try $ exec ["docker images -q ", imageName lang]
case res of
Left (SomeException err) -> logError ["An exception occured when checking for image ", cs $ imageName lang, ":\n", cs $ show err]
Right s -> do
when (BL.null s) . void $ do -- If string is empty that means the image does not yet exist
logInfo ["Building image ", cs $ imageName lang] logInfo ["Building image ", cs $ imageName lang]
exec_ ["docker build -t ", imageName lang, " ", cs (env ^. #languagesDir) </> cs (lang ^. #name)] exec_ ["docker build -t ", imageName lang, " ", cs (env ^. #languagesDir) </> cs (lang ^. #name)]
setupQSems
logInfo ["Built image ", cs $ imageName lang] logInfo ["Built image ", cs $ imageName lang]
setupQSems
when (env ^. #config % #prepareContainers) . void $ setupContainer lang when (env ^. #config % #prepareContainers) . void $ setupContainer lang
where where
setupQSems :: Myriad () setupQSems :: Myriad ()