From bd103298280f4b4045292246060b2a2785e51ffe Mon Sep 17 00:00:00 2001 From: Bolke de Bruin <bolke@xs4all.nl> Date: Sat, 25 Dec 2021 13:41:56 +0100 Subject: [PATCH] Add arm64 docker-build --- dev/docker/Dockerfile | 32 ++++++++++++------- dev/docker/docker-compose-arm64.yml | 48 +++++++++++++++++++++++++++++ dev/docker/docker-compose.yml | 2 +- 3 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 dev/docker/docker-compose-arm64.yml diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile index a58c8d4..b7e6755 100644 --- a/dev/docker/Dockerfile +++ b/dev/docker/Dockerfile @@ -1,8 +1,13 @@ -FROM debian:buster-slim +FROM alpine:latest -RUN apt-get update && \ - apt-get install -y git golang openssl curl && \ - random=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) && \ +RUN apk add --no-cache gcc git make musl-dev go openssl curl + +# Configure Go +ENV GOROOT /usr/lib/go +ENV GOPATH /go +ENV PATH /go/bin:$PATH + +RUN random=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) && \ openssl genrsa -des3 -passout pass:$random -out server.pass.key 2048 && \ openssl rsa -passin pass:$random -in server.pass.key -out key.pem && \ rm server.pass.key && \ @@ -10,13 +15,18 @@ RUN apt-get update && \ -subj "/C=US/ST=VA/L=SomeCity/O=MyCompany/OU=MyDivision/CN=localhost" && \ openssl x509 -req -days 365 -in server.csr -signkey key.pem -out server.pem -RUN curl -L https://dl.google.com/go/go1.17.5.linux-amd64.tar.gz -o golang.tgz && \ - tar zxvf golang.tgz && rm golang.tgz - -RUN git clone https://github.com/bolkedebruin/rdpgw.git && \ +RUN apkArch="$(apk --print-arch)"; \ + case "$apkArch" in \ + armhf) ARCH='arm' ;; \ + aarch64) ARCH='arm64' ;; \ + x86_64) ARCH='amd64' ;; \ + x86) ARCH='386' ;; \ + *) echo >&2 "error: unsupported architecture: $apkArch"; exit 1 ;; \ + esac && \ + git clone https://github.com/bolkedebruin/rdpgw.git && \ cd rdpgw && \ - env GOOS=linux GOARCH=amd64 GOROOT=/go /go/bin/go mod tidy && \ - env GOOS=linux GOARCH=amd64 GOROOT=/go /go/bin/go build -trimpath -tags '' -ldflags '' -o '/rdpgw/bin/rdpgw' ./cmd/rdpgw && \ + go mod tidy && \ + go build -trimpath -tags '' -ldflags '' -o '/rdpgw/bin/rdpgw' ./cmd/rdpgw && \ mkdir -p /opt/rdpgw && \ mv /rdpgw/bin/rdpgw /opt/rdpgw/rdpgw && \ rm -rf /root/go && \ @@ -26,7 +36,7 @@ RUN rm -rf /go COPY rdpgw.yaml /opt/rdpgw/rdpgw.yaml -RUN useradd -m -d /opt/rdpgw -u 1001 -c "rdgw" rdgw && \ +RUN adduser --disabled-password --gecos "" -h /opt/rdpgw -u 1001 rdgw && \ mv server.pem /opt/rdpgw/server.pem && \ mv key.pem /opt/rdpgw/key.pem && \ chown -R 1001 /opt/rdpgw && \ diff --git a/dev/docker/docker-compose-arm64.yml b/dev/docker/docker-compose-arm64.yml new file mode 100644 index 0000000..4788406 --- /dev/null +++ b/dev/docker/docker-compose-arm64.yml @@ -0,0 +1,48 @@ +version: '3.4' + +volumes: + mysql_data: + driver: local + realm-export.json: + +services: + keycloak: + image: richardjkendall/keycloak-arm:latest + hostname: keycloak + volumes: + - ${PWD}/realm-export.json:/export/realm-export.json + environment: + KEYCLOAK_USER: admin + KEYCLOAK_PASSWORD: admin + KEYCLOAK_IMPORT: /export/realm-export.json + ports: + - 8080:8080 + restart: on-failure + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/auth"] + interval: 30s + timeout: 3s + retries: 10 + start_period: 5s + xrdp: + hostname: xrdp + image: rattydave/docker-ubuntu-xrdp-mate-custom:20.04 + ports: + - 3389:3389 + restart: on-failure + volumes: + - ${PWD}/xrdp_users.txt:/root/createusers.txt + environment: + TZ: "Europe/Amsterdam" + rdpgw: + build: . + ports: + - 9443:9443 + restart: on-failure + depends_on: + - keycloak + healthcheck: + test: ["CMD", "curl", "-f", "http://keycloak:8080"] + interval: 30s + timeout: 10s + retries: 10 diff --git a/dev/docker/docker-compose.yml b/dev/docker/docker-compose.yml index 362b89d..230d65b 100644 --- a/dev/docker/docker-compose.yml +++ b/dev/docker/docker-compose.yml @@ -7,7 +7,7 @@ volumes: services: keycloak: - image: quay.io/keycloak/keycloak:11.0.0 + image: quay.io/keycloak/keycloak:latest hostname: keycloak volumes: - ${PWD}/realm-export.json:/export/realm-export.json -- GitLab