cmd/storagenode: remove storagenode dockerfiles
Updates https://github.com/storj/storagenode-docker/issues/1 Change-Id: I6b2f42194cb0e32f1b3978072fd6e1cdec753704
This commit is contained in:
parent
674068a5f2
commit
6277d93c82
73
Makefile
73
Makefile
@ -296,7 +296,7 @@ satellite-wasm:
|
||||
scripts/build-wasm.sh ;\
|
||||
|
||||
.PHONY: images
|
||||
images: multinode-image satellite-image uplink-image storagenode-image versioncontrol-image ## Build multinode, satellite, storagenode, and versioncontrol Docker images
|
||||
images: multinode-image satellite-image uplink-image versioncontrol-image ## Build multinode, satellite and versioncontrol Docker images
|
||||
echo Built version: ${TAG}
|
||||
|
||||
.PHONY: multinode-image
|
||||
@ -332,58 +332,6 @@ satellite-image: satellite_linux_arm satellite_linux_arm64 satellite_linux_amd64
|
||||
--build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 \
|
||||
-f cmd/satellite/Dockerfile .
|
||||
|
||||
.PHONY: storagenode-image
|
||||
storagenode-image: ## Build storagenode Docker image
|
||||
${DOCKER_BUILD} --pull=true -t storjlabs/storagenode:${TAG}${CUSTOMTAG}-amd64 \
|
||||
--build-arg=GOARCH=amd64 \
|
||||
-f cmd/storagenode/Dockerfile .
|
||||
${DOCKER_BUILD} --pull=true -t storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm32v5 \
|
||||
--build-arg=GOARCH=arm --build-arg=DOCKER_ARCH=arm32v5 --build-arg=DOCKER_PLATFORM=linux/arm/v5 \
|
||||
-f cmd/storagenode/Dockerfile .
|
||||
${DOCKER_BUILD} --pull=true -t storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm64v8 \
|
||||
--build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 --build-arg=DOCKER_PLATFORM=linux/arm64 \
|
||||
-f cmd/storagenode/Dockerfile .
|
||||
|
||||
.PHONY: storagenode-base-image
|
||||
storagenode-base-image: ## Build storagenode Docker base image. Requires buildx. This image is expected to be built manually using buildx and QEMU.
|
||||
${DOCKER_BUILDX} --pull=true -t storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-amd64 \
|
||||
-f cmd/storagenode/Dockerfile.base .
|
||||
${DOCKER_BUILDX} --pull=true -t storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm32v5 \
|
||||
--build-arg=GOARCH=arm --build-arg=DOCKER_ARCH=arm32v5 \
|
||||
-f cmd/storagenode/Dockerfile.base .
|
||||
${DOCKER_BUILDX} --pull=true -t storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm64v8 \
|
||||
--build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 \
|
||||
-f cmd/storagenode/Dockerfile.base .
|
||||
|
||||
.PHONY: push-storagenode-base-image
|
||||
push-storagenode-base-image: ## Push the storagenode base image to dockerhub
|
||||
docker push storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-amd64
|
||||
docker push storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm32v5
|
||||
docker push storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm64v8
|
||||
# create, annotate and push manifests for latest-amd64
|
||||
docker manifest create storjlabs/storagenode-base:latest-amd64 storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-amd64
|
||||
docker manifest annotate storjlabs/storagenode-base:latest-amd64 storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-amd64 --os linux --arch amd64
|
||||
docker manifest push --purge storjlabs/storagenode-base:latest-amd64
|
||||
# create, annotate and push manifests for latest-arm32v5
|
||||
docker manifest create storjlabs/storagenode-base:latest-arm32v5 storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm32v5
|
||||
docker manifest annotate storjlabs/storagenode-base:latest-arm32v5 storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm32v5 --os linux --arch arm --variant v5
|
||||
docker manifest push --purge storjlabs/storagenode-base:latest-arm32v5
|
||||
# create, annotate and push manifests for latest-arm64v8
|
||||
docker manifest create storjlabs/storagenode-base:latest-arm64v8 storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm64v8
|
||||
docker manifest annotate storjlabs/storagenode-base:latest-arm64v8 storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm64v8 --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge storjlabs/storagenode-base:latest-arm64v8
|
||||
# create, annotate and push manifests for main ${GIT_TAG}${CUSTOMTAG} tag without arch extension and latest tag
|
||||
for t in ${GIT_TAG}${CUSTOMTAG} latest; do \
|
||||
docker manifest create storjlabs/storagenode-base:$$t \
|
||||
storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-amd64 \
|
||||
storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm32v5 \
|
||||
storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm64v8 \
|
||||
&& docker manifest annotate storjlabs/storagenode-base:$$t storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-amd64 --os linux --arch amd64 \
|
||||
&& docker manifest annotate storjlabs/storagenode-base:$$t storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm32v5 --os linux --arch arm --variant v5 \
|
||||
&& docker manifest annotate storjlabs/storagenode-base:$$t storjlabs/storagenode-base:${GIT_TAG}${CUSTOMTAG}-arm64v8 --os linux --arch arm64 --variant v8 \
|
||||
&& docker manifest push --purge storjlabs/storagenode-base:$$t \
|
||||
; done
|
||||
|
||||
.PHONY: versioncontrol-image
|
||||
versioncontrol-image: versioncontrol_linux_arm versioncontrol_linux_arm64 versioncontrol_linux_amd64 ## Build versioncontrol Docker image
|
||||
${DOCKER_BUILD} --pull=true -t storjlabs/versioncontrol:${TAG}${CUSTOMTAG}-amd64 \
|
||||
@ -490,7 +438,7 @@ sign-windows-installer:
|
||||
.PHONY: push-images
|
||||
push-images: ## Push Docker images to Docker Hub (jenkins)
|
||||
# images have to be pushed before a manifest can be created
|
||||
for c in multinode satellite uplink storagenode versioncontrol ; do \
|
||||
for c in multinode satellite uplink versioncontrol ; do \
|
||||
docker push storjlabs/$$c:${TAG}${CUSTOMTAG}-amd64 \
|
||||
&& docker push storjlabs/$$c:${TAG}${CUSTOMTAG}-arm32v5 \
|
||||
&& docker push storjlabs/$$c:${TAG}${CUSTOMTAG}-arm64v8 \
|
||||
@ -506,22 +454,6 @@ push-images: ## Push Docker images to Docker Hub (jenkins)
|
||||
; done \
|
||||
; done
|
||||
|
||||
.PHONY: push-storagenode-images
|
||||
push-storagenode-images:
|
||||
docker push storjlabs/storagenode:${TAG}${CUSTOMTAG}-amd64 \
|
||||
&& docker push storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm32v5 \
|
||||
&& docker push storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm64v8 \
|
||||
&& for t in ${TAG}${CUSTOMTAG} ${LATEST_TAG}; do \
|
||||
docker manifest create storjlabs/storagenode:$$t \
|
||||
storjlabs/storagenode:${TAG}${CUSTOMTAG}-amd64 \
|
||||
storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm32v5 \
|
||||
storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm64v8 \
|
||||
&& docker manifest annotate storjlabs/storagenode:$$t storjlabs/storagenode:${TAG}${CUSTOMTAG}-amd64 --os linux --arch amd64 \
|
||||
&& docker manifest annotate storjlabs/storagenode:$$t storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm32v5 --os linux --arch arm --variant v5 \
|
||||
&& docker manifest annotate storjlabs/storagenode:$$t storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm64v8 --os linux --arch arm64 --variant v8 \
|
||||
&& docker manifest push --purge storjlabs/storagenode:$$t \
|
||||
; done
|
||||
|
||||
.PHONY: binaries-upload
|
||||
binaries-upload: ## Upload binaries to Google Storage (jenkins)
|
||||
cd "release/${TAG}"; for f in *; do \
|
||||
@ -554,7 +486,6 @@ binaries-clean: ## Remove all local release binaries (jenkins)
|
||||
clean-images:
|
||||
-docker rmi storjlabs/multinode:${TAG}${CUSTOMTAG}
|
||||
-docker rmi storjlabs/satellite:${TAG}${CUSTOMTAG}
|
||||
-docker rmi storjlabs/storagenode:${TAG}${CUSTOMTAG}
|
||||
-docker rmi storjlabs/versioncontrol:${TAG}${CUSTOMTAG}
|
||||
|
||||
##@ Tooling
|
||||
|
@ -1,27 +0,0 @@
|
||||
ARG DOCKER_ARCH
|
||||
ARG DOCKER_PLATFORM
|
||||
|
||||
FROM --platform=${DOCKER_PLATFORM:-linux/amd64} storjlabs/storagenode-base:70e276ecb-${DOCKER_ARCH:-amd64}
|
||||
ARG TAG
|
||||
ARG GOARCH
|
||||
ARG VERSION_SERVER_URL
|
||||
ARG SUPERVISOR_SERVER
|
||||
ENV GOARCH ${GOARCH:-amd64}
|
||||
ENV VERSION_SERVER_URL ${VERSION_SERVER_URL:-https://version.storj.io}
|
||||
ENV SUPERVISOR_SERVER ${SUPERVISOR_SERVER:-unix}
|
||||
EXPOSE 28967
|
||||
EXPOSE 14002
|
||||
# copy the files individually to avoid overriding the permissions on the folders
|
||||
COPY cmd/storagenode/docker/entrypoint /entrypoint
|
||||
COPY cmd/storagenode/docker/app/dashboard.sh /app/dashboard.sh
|
||||
COPY cmd/storagenode/docker/bin/systemctl /bin/systemctl
|
||||
WORKDIR /app
|
||||
ENTRYPOINT ["/entrypoint"]
|
||||
|
||||
ENV ADDRESS="" \
|
||||
EMAIL="" \
|
||||
WALLET="" \
|
||||
STORAGE="2.0TB" \
|
||||
SETUP="false" \
|
||||
AUTO_UPDATE="true" \
|
||||
LOG_LEVEL=""
|
@ -1,14 +0,0 @@
|
||||
ARG DOCKER_ARCH
|
||||
|
||||
FROM ${DOCKER_ARCH:-amd64}/debian:buster-slim
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ca-certificates supervisor unzip wget
|
||||
RUN update-ca-certificates
|
||||
RUN mkdir -p /var/log/supervisor /app
|
||||
COPY cmd/storagenode/docker-base/ /
|
||||
# set permissions to allow non-root access
|
||||
RUN chmod -R a+rw /etc/supervisor /var/log/supervisor /app
|
||||
# remove the default supervisord.conf
|
||||
RUN rm -rf /etc/supervisord.conf
|
||||
# create a symlink to custom supervisord config file at the default location
|
||||
RUN ln -s /etc/supervisor/supervisord.conf /etc/supervisord.conf
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
printf "READY\n";
|
||||
|
||||
while read -r; do
|
||||
kill -SIGQUIT $PPID
|
||||
done < /dev/stdin
|
@ -1,41 +0,0 @@
|
||||
[supervisord]
|
||||
user=root
|
||||
nodaemon=true
|
||||
logfile=/var/log/supervisor/supervisord.log
|
||||
pidfile=/etc/supervisor/supervisord.pid
|
||||
childlogdir=/var/log/supervisor
|
||||
|
||||
[rpcinterface:supervisor]
|
||||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[unix_http_server]
|
||||
file=/etc/supervisor/supervisor.sock
|
||||
username=dummy
|
||||
password=dummy
|
||||
|
||||
[supervisorctl]
|
||||
serverurl=unix:///etc/supervisor/supervisor.sock
|
||||
username=dummy
|
||||
password=dummy
|
||||
|
||||
[program:storagenode-updater]
|
||||
command=/app/storagenode-updater
|
||||
autostart=%(ENV_AUTO_UPDATE)s
|
||||
autorestart=true
|
||||
environment=STORJ_ENV_PREFIX=STORJUPDATER
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stdout
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[program:storagenode]
|
||||
command=/app/storagenode
|
||||
autorestart=true
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stdout
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
[eventlistener:processes-exit-eventlistener]
|
||||
command=/bin/stop-supervisor
|
||||
events=PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
|
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
./storagenode dashboard --config-dir /app/config --identity-dir /app/identity $@
|
@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ "$*" != "show --property=MainPID storagenode" ]; then
|
||||
echo "invalid command" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf 'MainPID=%s' "$(supervisorctl -c /etc/supervisor/supervisord.conf pid storagenode)"
|
@ -1,129 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
get_default_url() {
|
||||
process=$1
|
||||
version=$2
|
||||
wget -O- "${VERSION_SERVER_URL}/processes/${process}/${version}/url?os=linux&arch=${GOARCH}"
|
||||
}
|
||||
|
||||
get_binary() {
|
||||
binary=$1
|
||||
url=$2
|
||||
wget -O "/tmp/${binary}.zip" "${url}"
|
||||
unzip -p "/tmp/${binary}.zip" > "/app/${binary}"
|
||||
rm "/tmp/${binary}.zip"
|
||||
chmod u+x "/app/${binary}"
|
||||
}
|
||||
|
||||
# install storagenode and storagenode-updater binaries
|
||||
# during run of the container to not to release new docker image
|
||||
# on each new version of the storagenode binary.
|
||||
if [ ! -f "storagenode-updater" ]; then
|
||||
echo "downloading storagenode-updater"
|
||||
get_binary storagenode-updater "$(get_default_url storagenode-updater minimum)"
|
||||
|
||||
if ./storagenode-updater should-update storagenode-updater \
|
||||
--binary-location /app/storagenode-updater \
|
||||
--identity-dir identity \
|
||||
--version.server-address="${VERSION_SERVER_URL}" 2>/dev/null
|
||||
then
|
||||
echo "updating storagenode-updater"
|
||||
get_binary storagenode-updater "$(get_default_url storagenode-updater suggested)"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "storagenode" ]; then
|
||||
echo "downloading storagenode"
|
||||
|
||||
if ./storagenode-updater should-update storagenode \
|
||||
--identity-dir identity \
|
||||
--version.server-address="${VERSION_SERVER_URL}" 2>/dev/null
|
||||
then
|
||||
get_binary storagenode "$(get_default_url storagenode suggested)"
|
||||
else
|
||||
get_binary storagenode "$(get_default_url storagenode minimum)"
|
||||
fi
|
||||
fi
|
||||
|
||||
SUPERVISOR_SERVER="${SUPERVISOR_SERVER:-unix}"
|
||||
|
||||
RUN_PARAMS="${RUN_PARAMS:-} --config-dir config"
|
||||
RUN_PARAMS="${RUN_PARAMS} --identity-dir identity"
|
||||
RUN_PARAMS="${RUN_PARAMS} --metrics.app-suffix=-alpha"
|
||||
RUN_PARAMS="${RUN_PARAMS} --metrics.interval=30m"
|
||||
|
||||
if [ -n "${VERSION_SERVER_URL:-}" ]; then
|
||||
RUN_PARAMS="${RUN_PARAMS} --version.server-address=${VERSION_SERVER_URL}"
|
||||
fi
|
||||
|
||||
if [ "${AUTO_UPDATE:-}" != "true" ]; then
|
||||
AUTO_UPDATE="false"
|
||||
fi
|
||||
|
||||
SNO_RUN_PARAMS="${RUN_PARAMS} --console.address=:14002"
|
||||
if [ -n "${STORAGE:-}" ]; then
|
||||
SNO_RUN_PARAMS="${SNO_RUN_PARAMS} --storage.allocated-disk-space=${STORAGE}"
|
||||
fi
|
||||
|
||||
if [ -n "${ADDRESS:-}" ]; then
|
||||
SNO_RUN_PARAMS="${SNO_RUN_PARAMS} --contact.external-address=${ADDRESS}"
|
||||
fi
|
||||
|
||||
if [ -n "${EMAIL:-}" ]; then
|
||||
SNO_RUN_PARAMS="${SNO_RUN_PARAMS} --operator.email=${EMAIL}"
|
||||
fi
|
||||
|
||||
if [ -n "${WALLET:-}" ]; then
|
||||
SNO_RUN_PARAMS="${SNO_RUN_PARAMS} --operator.wallet=${WALLET}"
|
||||
fi
|
||||
|
||||
if [ -n "${LOG_LEVEL:-}" ]; then
|
||||
SNO_RUN_PARAMS="${SNO_RUN_PARAMS} --log.level=${LOG_LEVEL}"
|
||||
fi
|
||||
|
||||
if [ "${SETUP:-}" = "true" ]; then
|
||||
echo "Running ./storagenode setup $SNO_RUN_PARAMS ${*}"
|
||||
exec ./storagenode setup ${SNO_RUN_PARAMS} ${*}
|
||||
else
|
||||
sed -i \
|
||||
"s#^command=/app/storagenode-updater\$#command=/app/storagenode-updater run --binary-location /app/storagenode ${RUN_PARAMS} #" \
|
||||
/etc/supervisor/supervisord.conf
|
||||
|
||||
sed -i \
|
||||
"s#^command=/app/storagenode\$#command=/app/storagenode run ${SNO_RUN_PARAMS} ${*}#" \
|
||||
/etc/supervisor/supervisord.conf
|
||||
|
||||
# remove explicit user flag when container is run as non-root
|
||||
if [ $EUID != "0" ]; then
|
||||
sed -i "s#^user=root##" /etc/supervisor/supervisord.conf
|
||||
fi
|
||||
|
||||
#
|
||||
case ${SUPERVISOR_SERVER} in
|
||||
unix) # default
|
||||
;;
|
||||
public_port)
|
||||
# replace unix_http_server section to inet_http_server
|
||||
sed -i "s#^\[unix_http_server\]\$#\[inet_http_server\]#" /etc/supervisor/supervisord.conf
|
||||
# replace unix socket file with tcp public port
|
||||
sed -i "s#^file=/etc/supervisor/supervisor.sock\$#port=*:9001#" /etc/supervisor/supervisord.conf
|
||||
# set server url to http server address
|
||||
sed -i "s#^serverurl=unix:///etc/supervisor/supervisor.sock\$#serverurl=http://127.0.0.1:9001#" /etc/supervisor/supervisord.conf
|
||||
;;
|
||||
private_port)
|
||||
# replace unix_http_server section to inet_http_server
|
||||
sed -i "s#^\[unix_http_server\]\$#\[inet_http_server\]#" /etc/supervisor/supervisord.conf
|
||||
# replace unix socket file with tcp private port .i.e. listens on only localhost
|
||||
sed -i "s#^file=/etc/supervisor/supervisor.sock\$#port=127.0.0.1:9001#" /etc/supervisor/supervisord.conf
|
||||
# set server url to http server address
|
||||
sed -i "s#^serverurl=unix:///etc/supervisor/supervisor.sock\$#serverurl=http://127.0.0.1:9001#" /etc/supervisor/supervisord.conf
|
||||
;;
|
||||
*)
|
||||
echo "Invalid value '${SUPERVISOR_SERVER}' for SUPERVISOR_SERVER. Expected 'unix', 'public_port' or 'private_port'"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
||||
fi
|
Loading…
Reference in New Issue
Block a user