From c4df541986191544536a4a3e4382aef30000f6ec Mon Sep 17 00:00:00 2001 From: rongyi Date: Thu, 3 Sep 2020 11:34:54 +0800 Subject: [PATCH 1/2] Update docker file, using multi-stage method to build ontology binary in container, not in host --- Makefile | 25 +++---------------------- docker/Dockerfile | 22 +++++++++++++++------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index 440004d985..f66ba6917b 100644 --- a/Makefile +++ b/Makefile @@ -63,32 +63,13 @@ all-cross: ontology-cross tools-cross abi format: $(GOFMT) -w main.go -docker/payload: docker/build/bin/ontology docker/Dockerfile - @echo "Building ontology payload" - @mkdir -p $@ - @cp docker/Dockerfile $@ - @cp docker/build/bin/ontology $@ - @touch $@ - -docker/build/bin/%: Makefile - @echo "Building ontology in docker" - @mkdir -p docker/build/bin docker/build/pkg - @$(DRUN) --rm \ - -v $(abspath docker/build/bin):/go/bin \ - -v $(abspath docker/build/pkg):/go/pkg \ - -v $(GOPATH)/src:/go/src \ - -w /go/src/github.com/ontio/ontology \ - golang:1.9.5-stretch \ - $(GC) $(BUILD_NODE_PAR) -o docker/build/bin/ontology main.go - @touch $@ -docker: Makefile docker/payload docker/Dockerfile +docker: Makefile @echo "Building ontology docker" - @$(DBUILD) -t $(DOCKER_NS)/ontology docker/payload - @docker tag $(DOCKER_NS)/ontology $(DOCKER_NS)/ontology:$(DOCKER_TAG) + @$(DBUILD) --no-cache -t $(DOCKER_NS)/ontology:$(DOCKER_TAG) - < docker/Dockerfile @touch $@ clean: rm -rf *.8 *.o *.out *.6 *exe coverage - rm -rf ontology ontology-* tools docker/payload docker/build + rm -rf ontology ontology-* tools diff --git a/docker/Dockerfile b/docker/Dockerfile index 3f94ca85c5..6961e205dd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,9 +1,17 @@ +# 1. Stage one: build ontology +FROM golang:1.13 AS build +WORKDIR /app +RUN git clone https://github.com/ontio/ontology.git && \ + cd ontology && \ + make + +# 2. Stage two: copy compiled binary from prev builded container(referenced by name build) +FROM ubuntu:18.04 +WORKDIR /app +COPY --from=build /app/ontology/ontology ontology -FROM tianon/ubuntu-core:14.04 -ENV ONTOLOGY_PATH /var/ontology -RUN mkdir -p $ONTOLOGY_PATH -COPY ontology $ONTOLOGY_PATH -EXPOSE 20334 20335 20336 20337 20338 20339 -WORKDIR $ONTOLOGY_PATH -ENTRYPOINT ["./ontology"] +EXPOSE 20334 20335 20336 20337 20338 20339 +#NOTE! we highly recommand that you put data dir to a mounted volume, e.g. --data-dir /data/Chain +#write data to docker image is *not* a best practice +ENTRYPOINT ["/app/ontology"] From 34f923729057460e13166c570a362c65843efcdf Mon Sep 17 00:00:00 2001 From: rongyi Date: Thu, 3 Sep 2020 11:44:32 +0800 Subject: [PATCH 2/2] Change ENTRYPOINT ==> CMD Give user a chance to 'docker exec -it ... bash' to run this image --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 6961e205dd..1e4747cdac 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -14,4 +14,4 @@ COPY --from=build /app/ontology/ontology ontology EXPOSE 20334 20335 20336 20337 20338 20339 #NOTE! we highly recommand that you put data dir to a mounted volume, e.g. --data-dir /data/Chain #write data to docker image is *not* a best practice -ENTRYPOINT ["/app/ontology"] +CMD ["/app/ontology"]