Skip to content
This repository was archived by the owner on Dec 2, 2017. It is now read-only.

Build caddy with plugins via multi-stage #121

Merged
merged 3 commits into from
Jun 9, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ pipeline:

docker:
image: plugins/docker
pull: true
repo: gitea/docs
tags: [ '${DRONE_BRANCH##release/v}' ]
when:
Expand All @@ -21,6 +22,7 @@ pipeline:

docker:
image: plugins/docker
pull: true
repo: gitea/docs
tags: [ 'latest' ]
when:
Expand Down
2 changes: 1 addition & 1 deletion .drone.yml.sig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eyJhbGciOiJIUzI1NiJ9.d29ya3NwYWNlOgogIHBhdGg6IHNyYwoKcGlwZWxpbmU6CiAgYnVpbGQ6CiAgICBpbWFnZTogd2ViaGlwcGllL2h1Z286bGF0ZXN0CiAgICBwdWxsOiB0cnVlCiAgICBjb21tYW5kczoKICAgICAgLSBtYWtlIHRyYW5zLWNvcHkKCiAgICAgIC0gbWFrZSBjbGVhbgogICAgICAtIG1ha2UgYnVpbGQKCiAgZG9ja2VyOgogICAgaW1hZ2U6IHBsdWdpbnMvZG9ja2VyCiAgICByZXBvOiBnaXRlYS9kb2NzCiAgICB0YWdzOiBbICcke0RST05FX0JSQU5DSCMjcmVsZWFzZS92fScgXQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCBdCiAgICAgIGJyYW5jaDogWyByZWxlYXNlLyogXQoKICBkb2NrZXI6CiAgICBpbWFnZTogcGx1Z2lucy9kb2NrZXIKICAgIHJlcG86IGdpdGVhL2RvY3MKICAgIHRhZ3M6IFsgJ2xhdGVzdCcgXQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCBdCiAgICAgIGJyYW5jaDogWyBtYXN0ZXIgXQoKICBnaXR0ZXI6CiAgICBpbWFnZTogcGx1Z2lucy9naXR0ZXIK.RPW5ozTUJwd47a23CY34doKDRgcm0DitJ-T5qH61Z-Q
eyJhbGciOiJIUzI1NiJ9.d29ya3NwYWNlOgogIHBhdGg6IHNyYwoKcGlwZWxpbmU6CiAgYnVpbGQ6CiAgICBpbWFnZTogd2ViaGlwcGllL2h1Z286bGF0ZXN0CiAgICBwdWxsOiB0cnVlCiAgICBjb21tYW5kczoKICAgICAgLSBtYWtlIHRyYW5zLWNvcHkKCiAgICAgIC0gbWFrZSBjbGVhbgogICAgICAtIG1ha2UgYnVpbGQKCiAgZG9ja2VyOgogICAgaW1hZ2U6IHBsdWdpbnMvZG9ja2VyCiAgICBwdWxsOiB0cnVlCiAgICByZXBvOiBnaXRlYS9kb2NzCiAgICB0YWdzOiBbICcke0RST05FX0JSQU5DSCMjcmVsZWFzZS92fScgXQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCBdCiAgICAgIGJyYW5jaDogWyByZWxlYXNlLyogXQoKICBkb2NrZXI6CiAgICBpbWFnZTogcGx1Z2lucy9kb2NrZXIKICAgIHB1bGw6IHRydWUKICAgIHJlcG86IGdpdGVhL2RvY3MKICAgIHRhZ3M6IFsgJ2xhdGVzdCcgXQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCBdCiAgICAgIGJyYW5jaDogWyBtYXN0ZXIgXQoKICBnaXR0ZXI6CiAgICBpbWFnZTogcGx1Z2lucy9naXR0ZXIK.-yyNQtRepINu0L0utwOeqe2kg71H4bGMaav5lWOz8-U
26 changes: 16 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
# build stage
FROM golang:alpine AS build-env

RUN apk add --no-cache git
RUN go get -d -v github.com/mholt/caddy/caddy github.com/pedronasser/caddy-search github.com/simia-tech/caddy-locale
WORKDIR /go/src/github.com/mholt/caddy/caddy

RUN sed -i '/This is where other plugins get plugged in (imported)/a _ "github.com/pedronasser/caddy-search"' caddymain/run.go \
&& sed -i '/This is where other plugins get plugged in (imported)/a _ "github.com/simia-tech/caddy-locale"' caddymain/run.go \
&& go install -v . \
&& /go/bin/caddy -version

FROM alpine:edge
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does docker v1.13.1 have support for multi-image?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(anyone can dismiss this review if this does work...)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only need Docker > 17.05 for building but the resulting image is compatible with any old version (only the last image is kept). This function permit to use a builder pattern in one Dockerfile (with possible multi-builder).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For confirmation, this is already in production on https://gitea.io with the same solution.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, it seems to bulid do :)

EXPOSE 80

RUN apk update && \
apk add wget mailcap ca-certificates && \
rm -rf /var/cache/apk/* && \
wget -O /tmp/caddy.tar.gz "https://caddyserver.com/download/build?os=linux&arch=amd64&features=locale%2Csearch" && \
mkdir -p /tmp/caddy && \
tar xvzf /tmp/caddy.tar.gz -C /tmp/caddy && \
cp /tmp/caddy/caddy /usr/sbin/caddy && \
rm -rf /tmp/caddy*

CMD ["/usr/sbin/caddy", "-conf", "/etc/caddy.conf"]
RUN apk add --no-cache wget mailcap ca-certificates
COPY --from=build-env /go/bin/caddy /usr/sbin/caddy

COPY docker/caddy.conf /etc/caddy.conf
COPY public /srv/www

CMD ["/usr/sbin/caddy", "-conf", "/etc/caddy.conf"]