From 5a168928ea451010b97d06be686b1a1a2141b31d Mon Sep 17 00:00:00 2001 From: Alexander Kiryukhin Date: Mon, 2 May 2022 14:09:37 +0300 Subject: [PATCH] Dockerfile --- Dockerfile | 19 +++++++++++++++++++ config.json | 18 ++++++++++++++++++ pkg | Bin 9901849 -> 0 bytes 3 files changed, 37 insertions(+) create mode 100644 Dockerfile delete mode 100755 pkg diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..efa35cb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM golang:1.18 as builder +WORKDIR /usr/src +COPY go.mod . +COPY go.sum . +RUN go mod download +COPY . . +RUN go build -a -installsuffix cgo -o service . + +FROM alpine +RUN apk update \ + && apk upgrade \ + && apk add --no-cache \ + ca-certificates \ + && update-ca-certificates 2>/dev/null || true +WORKDIR /usr/app +COPY --from=builder /usr/src/service . +COPY static . +COPY tpl . +CMD ["./service"] diff --git a/config.json b/config.json index 5105fd1..31a1a28 100644 --- a/config.json +++ b/config.json @@ -13,6 +13,24 @@ "vcs": "git", "repo": "https://github.com/neonxp/jsonrpc2", "desc": "Имплементация сервера JSON-RPC 2.0 с генериками." + }, + "collection": { + "pkg": "collection", + "vcs": "git", + "repo": "https://github.com/neonxp/collection", + "desc": "Коллекция методов для работы с коллекциями" + }, + "cluster": { + "pkg": "cluster", + "vcs": "git", + "repo": "https://github.com/neonxp/go-cluster", + "desc": "p2p cluster" + }, + "extra": { + "pkg": "extra", + "vcs": "git", + "repo": "https://github.com/neonxp/extra", + "desc": "Пакет с разными полезными функциями без дополнительных зависимостей." } } } diff --git a/pkg b/pkg deleted file mode 100755 index c4caa1b935d8fa6efffb5c8f277ef4d24adc34a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9901849 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