FROM alpine as certs
RUN apk update && apk add ca-certificates curl openssl bash
RUN curl -k https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/common/add-letsencrypt-ca.sh | bash

#####################################
#          Emissary Server          #
#####################################

FROM golang:1.21 AS build-emissary-server

RUN apt-get update \
    && apt-get install -y make

COPY . /src

WORKDIR /src

RUN make mktools && make GORELEASER_ARGS="build --snapshot --clean --single-target --id emissary-server" goreleaser

FROM busybox:latest AS emissary-server

ARG DUMB_INIT_VERSION=1.2.5

RUN mkdir -p /usr/local/bin \
    && wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 \
    && chmod +x /usr/local/bin/dumb-init

ENTRYPOINT ["/usr/local/bin/dumb-init", "--"]

COPY --from=build-emissary-server /src/dist/emissary-server_linux_amd64_v1 /app
COPY misc/docker/server.yml /etc/emissary/server.yml
COPY --from=certs /etc/ssl/certs /etc/ssl/certs

EXPOSE 3000

RUN mkdir -p /data

CMD [ "/app/emissary", "-c", "/etc/emissary/config.yml", "server", "run"]

#####################################
#           Emissary Agent          #
#####################################

FROM golang:1.21 AS build-emissary-agent

RUN apt-get update \
    && apt-get install -y make

COPY . /src

WORKDIR /src

RUN make mktools && make GORELEASER_ARGS="build --snapshot --clean --single-target --id emissary-agent" goreleaser

FROM busybox:latest AS emissary-agent

ARG DUMB_INIT_VERSION=1.2.5

RUN mkdir -p /usr/local/bin \
    && wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_x86_64 \
    && chmod +x /usr/local/bin/dumb-init

ENTRYPOINT ["/usr/local/bin/dumb-init", "--"]

COPY --from=build-emissary-agent /src/dist/emissary-agent_linux_amd64_v1 /app

COPY --chmod=777 misc/docker/docker-agent-wrapper.sh /usr/local/bin/docker-agent-wrapper
COPY misc/docker/agent.yml /etc/emissary/agent.yml
COPY --from=certs /etc/ssl/certs /etc/ssl/certs

RUN mkdir -p /data

CMD [ "/usr/local/bin/docker-agent-wrapper", "/app/emissary", "-c", "/etc/emissary/agent.yml", "agent", "run" ]