mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-04-04 19:36:54 +00:00 
			
		
		
		
	create docker image based on release binaries
This commit is contained in:
		
							parent
							
								
									986e12c88b
								
							
						
					
					
						commit
						0c48a83bb5
					
				| @ -6,9 +6,9 @@ The only requirements are `git` (to checkout the repository) and docker (to buil | |||||||
| Golang does not have to be installed, the docker image build process uses a build stage that provides the | Golang does not have to be installed, the docker image build process uses a build stage that provides the | ||||||
| correct Go environment and compiles the node down to one command. | correct Go environment and compiles the node down to one command. | ||||||
| 
 | 
 | ||||||
| In the repository root folder, where the [Dockerfile](Dockerfile) file is, build the docker image: | In the repository root folder, where the [Dockerfile.source](Dockerfile.source) file is, build the docker image: | ||||||
| ```shell | ```shell | ||||||
| docker build --build-arg GIT_COMMIT=$(git log -1 --format=%h) -t quilibrium -t quilibrium:1.4.16 . | docker build -f Dockerfile.source --build-arg GIT_COMMIT=$(git log -1 --format=%h) -t quilibrium -t quilibrium:1.4.16 . | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Use latest version instead of `1.4.16`. | Use latest version instead of `1.4.16`. | ||||||
|  | |||||||
							
								
								
									
										55
									
								
								Dockerfile.release
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								Dockerfile.release
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | FROM golang:1.20.14-alpine3.19 as build | ||||||
|  | 
 | ||||||
|  | ARG NODE_VERSION | ||||||
|  | ARG MAX_KEY_ID | ||||||
|  | 
 | ||||||
|  | ENV GOEXPERIMENT=arenas | ||||||
|  | 
 | ||||||
|  | WORKDIR /opt/ceremonyclient | ||||||
|  | 
 | ||||||
|  | COPY . . | ||||||
|  | 
 | ||||||
|  | RUN cp "node/node-${NODE_VERSION}-linux-amd64" "node/node" | ||||||
|  | RUN cp "node/node-${NODE_VERSION}-linux-amd64.dgst" "node/node.dgst" | ||||||
|  | RUN for i in $(seq 1 ${MAX_KEY_ID}); do \ | ||||||
|  |       if [ -f node/node-${NODE_VERSION}-linux-amd64.dgst.sig.${i} ]; then \ | ||||||
|  |         cp "node/node-${NODE_VERSION}-linux-amd64.dgst.sig.${i}" "node/node.dgst.sig.${i}"; \ | ||||||
|  |       fi \ | ||||||
|  |     done | ||||||
|  | 
 | ||||||
|  | WORKDIR /opt/ceremonyclient/client | ||||||
|  | 
 | ||||||
|  | RUN go build -o qclient ./main.go | ||||||
|  | 
 | ||||||
|  | RUN go install github.com/fullstorydev/grpcurl/cmd/grpcurl@v1.9.1 | ||||||
|  | 
 | ||||||
|  | FROM alpine:3.19 | ||||||
|  | 
 | ||||||
|  | ARG NODE_VERSION | ||||||
|  | ARG GIT_REPO | ||||||
|  | ARG GIT_BRANCH | ||||||
|  | ARG GIT_COMMIT | ||||||
|  | 
 | ||||||
|  | ENV GOEXPERIMENT=arenas | ||||||
|  | 
 | ||||||
|  | LABEL org.opencontainers.image.title="Quilibrium Network Node" | ||||||
|  | LABEL org.opencontainers.image.description="Quilibrium is a decentralized alternative to platform as a service providers." | ||||||
|  | LABEL org.opencontainers.image.version=$NODE_VERSION | ||||||
|  | LABEL org.opencontainers.image.vendor=Quilibrium | ||||||
|  | LABEL org.opencontainers.image.url=https://quilibrium.com/ | ||||||
|  | LABEL org.opencontainers.image.documentation=https://quilibrium.com/docs | ||||||
|  | LABEL org.opencontainers.image.source=$GIT_REPO | ||||||
|  | LABEL org.opencontainers.image.ref.name=$GIT_BRANCH | ||||||
|  | LABEL org.opencontainers.image.revision=$GIT_COMMIT | ||||||
|  | 
 | ||||||
|  | COPY --from=build /opt/ceremonyclient/node/node /usr/local/bin | ||||||
|  | COPY --from=build /opt/ceremonyclient/node/node.dgst /usr/local/bin | ||||||
|  | COPY --from=build /opt/ceremonyclient/node/node.dgst.sig.* /usr/local/bin | ||||||
|  | 
 | ||||||
|  | COPY --from=build /opt/ceremonyclient/client/qclient /usr/local/bin | ||||||
|  | 
 | ||||||
|  | COPY --from=build /go/bin/grpcurl /usr/local/bin | ||||||
|  | 
 | ||||||
|  | WORKDIR /root | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["node"] | ||||||
| @ -5,6 +5,9 @@ version: '3' | |||||||
| dotenv: | dotenv: | ||||||
|   - '.env' |   - '.env' | ||||||
| 
 | 
 | ||||||
|  | env: | ||||||
|  |   DOCKER_BUILDKIT: '1' | ||||||
|  | 
 | ||||||
| vars: | vars: | ||||||
|   VERSION: |   VERSION: | ||||||
|     sh: cat node/config/version.go | grep -A 1 "func GetVersion() \[\]byte {" | grep -Eo '0x[0-9a-fA-F]+' | xargs printf "%d.%d.%d" |     sh: cat node/config/version.go | grep -A 1 "func GetVersion() \[\]byte {" | grep -Eo '0x[0-9a-fA-F]+' | xargs printf "%d.%d.%d" | ||||||
| @ -14,6 +17,7 @@ vars: | |||||||
|     sh: git rev-parse --abbrev-ref HEAD |     sh: git rev-parse --abbrev-ref HEAD | ||||||
|   GIT_COMMIT: |   GIT_COMMIT: | ||||||
|     sh: git log -1 --format=%h |     sh: git log -1 --format=%h | ||||||
|  |   MAX_KEY_ID: 17 | ||||||
| 
 | 
 | ||||||
| tasks: | tasks: | ||||||
|   status: |   status: | ||||||
| @ -24,33 +28,54 @@ tasks: | |||||||
|       - echo -n "Repo      :" && echo " {{.GIT_REPO}}" |       - echo -n "Repo      :" && echo " {{.GIT_REPO}}" | ||||||
|       - echo -n "Branch    :" && echo " {{.GIT_BRANCH}}" |       - echo -n "Branch    :" && echo " {{.GIT_BRANCH}}" | ||||||
|       - echo -n "Commit    :" && echo " {{.GIT_COMMIT}}" |       - echo -n "Commit    :" && echo " {{.GIT_COMMIT}}" | ||||||
|  |       - echo -n "Max Key ID:" && echo " {{.MAX_KEY_ID}}" | ||||||
|     silent: true |     silent: true | ||||||
| 
 | 
 | ||||||
|   build: |   build:source: | ||||||
|     desc: Build the Quilibrium docker image, unless it is already built. |     desc: Build the Quilibrium docker image from source. | ||||||
|     cmds: |     cmds: | ||||||
|       - | |       - | | ||||||
|         docker build \ |         docker build \ | ||||||
|  |         -f Dockerfile.source \ | ||||||
|         --build-arg NODE_VERSION={{.VERSION}} \ |         --build-arg NODE_VERSION={{.VERSION}} \ | ||||||
|         --build-arg GIT_REPO={{.GIT_REPO}} \ |         --build-arg GIT_REPO={{.GIT_REPO}} \ | ||||||
|         --build-arg GIT_BRANCH={{.GIT_BRANCH}} \ |         --build-arg GIT_BRANCH={{.GIT_BRANCH}} \ | ||||||
|         --build-arg GIT_COMMIT={{.GIT_COMMIT}} \ |         --build-arg GIT_COMMIT={{.GIT_COMMIT}} \ | ||||||
|         -t ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:{{.VERSION}} \ |         -t ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:{{.VERSION}}-source \ | ||||||
|         -t ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:latest \ |         -t ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:source \ | ||||||
|         . |         . | ||||||
|     status: |     status: | ||||||
|       - | |       - | | ||||||
|         docker image inspect \ |         docker image inspect \ | ||||||
|         ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:{{.VERSION}} \ |         ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:{{.VERSION}}-source \ | ||||||
|         >/dev/null 2>/dev/null |         >/dev/null 2>/dev/null | ||||||
| 
 | 
 | ||||||
|   github:login: |   build:release: | ||||||
|     desc: Login to GitHub container registry. |     desc: Build the Quilibrium docker image from release binaries. | ||||||
|  |     aliases: | ||||||
|  |       - build | ||||||
|     cmds: |     cmds: | ||||||
|       - echo $GITHUB_TOKEN | docker login ghcr.io -u $GITHUB_USERNAME --password-stdin |       - | | ||||||
|  |         docker build \ | ||||||
|  |         -f Dockerfile.release \ | ||||||
|  |         --build-arg NODE_VERSION={{.VERSION}} \ | ||||||
|  |         --build-arg GIT_REPO={{.GIT_REPO}} \ | ||||||
|  |         --build-arg GIT_BRANCH={{.GIT_BRANCH}} \ | ||||||
|  |         --build-arg GIT_COMMIT={{.GIT_COMMIT}} \ | ||||||
|  |         --build-arg MAX_KEY_ID={{.MAX_KEY_ID}} \ | ||||||
|  |         -t ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:{{.VERSION}}-release \ | ||||||
|  |         -t ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:release \ | ||||||
|  |         . | ||||||
|  |     status: | ||||||
|  |       - | | ||||||
|  |         docker image inspect \ | ||||||
|  |         ${QUILIBRIUM_IMAGE_NAME:-quilibrium}:{{.VERSION}}-release \ | ||||||
|  |         >/dev/null 2>/dev/null | ||||||
| 
 | 
 | ||||||
|   docker:login: |   docker:login: | ||||||
|     desc: Login to Docker hub |     desc: Login to Docker hub | ||||||
|  |     aliases: | ||||||
|  |       - login | ||||||
|     cmds: |     cmds: | ||||||
|       - echo $DOCKER_TOKEN | docker login -u $DOCKER_USERNAME --password-stdin |       - echo $DOCKER_TOKEN | docker login -u $DOCKER_USERNAME --password-stdin | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,13 +7,6 @@ services: | |||||||
|   node: |   node: | ||||||
|     image: ${QUILIBRIUM_IMAGE_NAME:-quilibrium} |     image: ${QUILIBRIUM_IMAGE_NAME:-quilibrium} | ||||||
|     restart: unless-stopped |     restart: unless-stopped | ||||||
|     deploy: |  | ||||||
|       resources: |  | ||||||
|         limits: |  | ||||||
|           memory: '32G' |  | ||||||
|         reservations: |  | ||||||
|           cpus: '12' |  | ||||||
|           memory: '16G' |  | ||||||
|     environment: |     environment: | ||||||
|       - DEFAULT_LISTEN_GRPC_MULTIADDR=/ip4/0.0.0.0/tcp/8337 |       - DEFAULT_LISTEN_GRPC_MULTIADDR=/ip4/0.0.0.0/tcp/8337 | ||||||
|       - DEFAULT_LISTEN_REST_MULTIADDR=/ip4/0.0.0.0/tcp/8338 |       - DEFAULT_LISTEN_REST_MULTIADDR=/ip4/0.0.0.0/tcp/8338 | ||||||
| @ -27,7 +20,7 @@ services: | |||||||
|       interval: 30s |       interval: 30s | ||||||
|       timeout: 5s |       timeout: 5s | ||||||
|       retries: 3 |       retries: 3 | ||||||
|       start_period: 1m |       start_period: 15m | ||||||
|     volumes: |     volumes: | ||||||
|       - ./.config:/root/.config |       - ./.config:/root/.config | ||||||
|     logging: |     logging: | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ env: | |||||||
| vars: | vars: | ||||||
|   VERSION: |   VERSION: | ||||||
|     sh: cat ../node/config/version.go | grep -A 1 "func GetVersion() \[\]byte {" | grep -Eo '0x[0-9a-fA-F]+' | xargs printf "%d.%d.%d" |     sh: cat ../node/config/version.go | grep -A 1 "func GetVersion() \[\]byte {" | grep -Eo '0x[0-9a-fA-F]+' | xargs printf "%d.%d.%d" | ||||||
|   MAX_KEY_ID: 15 |   MAX_KEY_ID: 17 | ||||||
|   QUILIBRIUM_SIGNERS_IMAGE_NAME: 'quilibrium-signers' |   QUILIBRIUM_SIGNERS_IMAGE_NAME: 'quilibrium-signers' | ||||||
|   USER_NAME: |   USER_NAME: | ||||||
|     sh: whoami |     sh: whoami | ||||||
| @ -27,6 +27,7 @@ tasks: | |||||||
|       - echo -n "Priv Key Path:" && echo " {{.SIGNING_KEY_PATH}}" |       - echo -n "Priv Key Path:" && echo " {{.SIGNING_KEY_PATH}}" | ||||||
|       - echo -n "Pub  Key Path:" && echo " {{.SIGNING_PUB_KEY_PATH}}" |       - echo -n "Pub  Key Path:" && echo " {{.SIGNING_PUB_KEY_PATH}}" | ||||||
|       - echo -n "Key ID       :" && echo " {{.SIGNING_KEY_ID}}" |       - echo -n "Key ID       :" && echo " {{.SIGNING_KEY_ID}}" | ||||||
|  |       - echo -n "Max Key ID   :" && echo " {{.MAX_KEY_ID}}" | ||||||
|     silent: true |     silent: true | ||||||
| 
 | 
 | ||||||
|   hex: |   hex: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marius Scurtescu
						Marius Scurtescu