diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0bc529e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +# Exclude Dockerfile and .dockerignore so that the docker layer cache won't be +# invalidated after editing them (which changes the build context if they are +# not ignored). +*Dockerfile* +.dockerignore +# Exclude git metadata since we only care about the working tree. +.git +.gitattributes +.gitignore +# Exclude docs +*.md + +*~ +*.o +xkblayout-state diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6861ab8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.14.2 AS build +RUN apk add --no-cache g++ libx11-dev make +WORKDIR /repo +COPY . . +RUN make +# RUN make && chmod a+x ./xkblayout-state +# Export to a minimal runtime image and run as an unprivileged user. +FROM alpine:3.14.2 +RUN apk add --no-cache libstdc++ libx11 +USER 1000:1000 +WORKDIR /repo +COPY --from=build --chown=1000:1000 /repo/xkblayout-state . +ENTRYPOINT ["./xkblayout-state"] diff --git a/README.md b/README.md index a6938a2..7d1131a 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Compilation and installation - To compile just say: `make` - To install copy the resulting executable `xkblayout-state` somewhere in your path +Alternatively with docker: `docker build .` Usage -----