From bcb0a6cc938679e3d611014b39135c28e2d98a33 Mon Sep 17 00:00:00 2001 From: Artem Tataurov Date: Mon, 21 Aug 2023 16:51:32 +0300 Subject: [PATCH] [#16] Add image creation from custom binaries Signed-off-by: Artem Tataurov --- Dockerfile.custom | 63 +++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 8 ++++++ README.md | 9 +++++++ 3 files changed, 80 insertions(+) create mode 100644 Dockerfile.custom diff --git a/Dockerfile.custom b/Dockerfile.custom new file mode 100644 index 0000000..2123747 --- /dev/null +++ b/Dockerfile.custom @@ -0,0 +1,63 @@ +ARG FROSTFS_HUB_IMAGE=truecloudlab/frostfs +ARG NEOGO_HUB_IMAGE=nspccdev/neo-go + +ARG FROSTFS_CORE_TAG=0.36.0 +ARG FROSTFS_GATES_TAG=0.27.0 +ARG NEOGO_TAG=0.101.1 + +FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} as neo-go +FROM ${FROSTFS_HUB_IMAGE}-adm:${FROSTFS_CORE_TAG} as frostfs-adm +FROM ${FROSTFS_HUB_IMAGE}-cli:${FROSTFS_CORE_TAG} as frostfs-cli +FROM ${FROSTFS_HUB_IMAGE}-ir:${FROSTFS_CORE_TAG} as frostfs-ir +FROM ${FROSTFS_HUB_IMAGE}-storage:${FROSTFS_CORE_TAG} as frostfs-storage +FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_GATES_TAG} as frostfs-s3-gw +FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_GATES_TAG} as frostfs-http-gw + +# Executable image +FROM alpine AS frostfs-aio +RUN apk add --no-cache \ + bash \ + ca-certificates \ + jq \ + expect \ + iputils \ + curl + +WORKDIR / + +COPY --from=neo-go /usr/bin/neo-go /usr/bin/neo-go +COPY --from=frostfs-adm /bin/frostfs-adm /usr/bin/frostfs-adm +COPY --from=frostfs-cli /bin/frostfs-cli /usr/bin/frostfs-cli +COPY --from=frostfs-ir /bin/frostfs-ir /usr/bin/frostfs-ir +COPY --from=frostfs-storage /bin/frostfs-node /usr/bin/frostfs-node +COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw +COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate +COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw + +COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml +COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml +COPY ./ir/config.yaml /config/config-ir.yaml +COPY ./morph/protocol.privnet.yml /config/protocol.privnet.yml +COPY ./morph/node-wallet.json /config/alphabet/az.json +COPY ./morph/node-wallet.json /config/node-wallet.json +COPY ./morph/node-config.yaml /config/node-config.yaml +COPY ./http-gw/http-gw-config.yaml /config/http-gw-config.yaml +COPY ./http-gw/http-gw-wallet.json /config/http-gw-wallet.json +COPY ./s3-gw/rules.json /config/bearer-rules.json +COPY ./s3-gw/s3-gw-config.yaml /config/s3-gw-config.yaml +COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json +COPY ./s3-gw/user-wallet.json /config/user-wallet.json +COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml +COPY ./sn/wallet.json /config/wallet-sn.json +COPY ./sn/config.yaml /config/config-sn.yaml +COPY ./vendor/locode_db /config/locode.db +COPY ./vendor/contracts/ /config/contracts + +COPY ./bin/init-aio.sh /config/bin/init-aio.sh + +COPY ./bin/neo-go* /usr/bin/ +COPY ./bin/frostfs-* /usr/bin/ + +ENV AUTHMATE_WALLET_PASSPHRASE="" + +ENTRYPOINT ["/config/bin/init-aio.sh"] diff --git a/Makefile b/Makefile index 53ef6de..b1c3e5a 100644 --- a/Makefile +++ b/Makefile @@ -50,6 +50,14 @@ image-aio-local: -f Dockerfile.local \ -t $(AIO_IMAGE):$(AIO_VERSION) . +# Build aio Docker image with custom binaries +image-aio-custom: + @echo "⇒ Build aio Docker image with custom binaries" + @docker build \ + --rm \ + -f Dockerfile.custom \ + -t $(AIO_IMAGE):$(AIO_VERSION) . + # Start AIO up: @$(COMPOSE_CMD_UP) diff --git a/README.md b/README.md index c92e367..aa6664d 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,15 @@ Build frostfs-aio image using pre-built local binaries for all the services. $ make image-aio-local ``` +## Image with custom binaries + +This target is useful when one needs to change only a few binaries and keep the others "as is". + +Put the needed binaries to `frostfs-aio/bin/`. Make sure they all have the `x` right for the +execution enabled. All the binaries falling down to these masks will be copied to image: +- frostfs-* +- neo-go* + # Simple storage