mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 10:27:46 +08:00
Merge pull request #6100 from ipfs/gomod/dockerfile
gomod: Update Dockerfile, remove Dockerfile.fast
This commit is contained in:
commit
e11bbd7820
17
Dockerfile
17
Dockerfile
@ -1,22 +1,19 @@
|
||||
FROM golang:1.11-stretch
|
||||
FROM golang:1.12-stretch
|
||||
MAINTAINER Lars Gierth <lgierth@ipfs.io>
|
||||
|
||||
# There is a copy of this Dockerfile called Dockerfile.fast,
|
||||
# which is optimized for build time, instead of image size.
|
||||
#
|
||||
# Please keep these two Dockerfiles in sync.
|
||||
ENV SRC_DIR /go-ipfs
|
||||
|
||||
ENV GX_IPFS ""
|
||||
ENV SRC_DIR /go/src/github.com/ipfs/go-ipfs
|
||||
# Download packages first so they can be cached.
|
||||
COPY go.mod go.sum $SRC_DIR/
|
||||
RUN cd $SRC_DIR \
|
||||
&& go mod download
|
||||
|
||||
COPY . $SRC_DIR
|
||||
|
||||
# Build the thing.
|
||||
# Also: fix getting HEAD commit hash via git rev-parse.
|
||||
# Also: allow using a custom IPFS API endpoint.
|
||||
RUN cd $SRC_DIR \
|
||||
&& mkdir .git/objects \
|
||||
&& ([ -z "$GX_IPFS" ] || echo $GX_IPFS > /root/.ipfs/api) \
|
||||
&& make build
|
||||
|
||||
# Get su-exec, a very minimal tool for dropping privileges,
|
||||
@ -41,7 +38,7 @@ FROM busybox:1-glibc
|
||||
MAINTAINER Lars Gierth <lgierth@ipfs.io>
|
||||
|
||||
# Get the ipfs binary, entrypoint script, and TLS CAs from the build container.
|
||||
ENV SRC_DIR /go/src/github.com/ipfs/go-ipfs
|
||||
ENV SRC_DIR /go-ipfs
|
||||
COPY --from=0 $SRC_DIR/cmd/ipfs/ipfs /usr/local/bin/ipfs
|
||||
COPY --from=0 $SRC_DIR/bin/container_daemon /usr/local/bin/start_ipfs
|
||||
COPY --from=0 /tmp/su-exec/su-exec /sbin/su-exec
|
||||
|
||||
@ -1,75 +0,0 @@
|
||||
FROM golang:1.11-stretch
|
||||
MAINTAINER Lars Gierth <lgierth@ipfs.io>
|
||||
|
||||
# This is a copy of /Dockerfile,
|
||||
# except that we optimize for build time, instead of image size.
|
||||
#
|
||||
# Please keep these two Dockerfiles in sync.
|
||||
|
||||
ENV GX_IPFS ""
|
||||
ENV SRC_DIR /go/src/github.com/ipfs/go-ipfs
|
||||
|
||||
COPY ./package.json $SRC_DIR/package.json
|
||||
|
||||
# Fetch dependencies.
|
||||
# Also: allow using a custom IPFS API endpoint.
|
||||
RUN set -x \
|
||||
&& go get github.com/whyrusleeping/gx \
|
||||
&& go get github.com/whyrusleeping/gx-go \
|
||||
&& ([ -z "$GX_IPFS" ] || echo $GX_IPFS > /root/.ipfs/api) \
|
||||
&& cd $SRC_DIR \
|
||||
&& gx install
|
||||
|
||||
COPY . $SRC_DIR
|
||||
|
||||
# Build the thing.
|
||||
# Also: fix getting HEAD commit hash via git rev-parse.
|
||||
RUN set -x \
|
||||
&& cd $SRC_DIR \
|
||||
&& mkdir .git/objects \
|
||||
&& make build \
|
||||
&& mv cmd/ipfs/ipfs /usr/local/bin/ipfs \
|
||||
&& mv bin/container_daemon /usr/local/bin/start_ipfs
|
||||
|
||||
# Get su-exec, a very minimal tool for dropping privileges,
|
||||
# and tini, a very minimal init daemon for containers
|
||||
ENV SUEXEC_VERSION v0.2
|
||||
ENV TINI_VERSION v0.16.1
|
||||
RUN set -x \
|
||||
&& cd /tmp \
|
||||
&& git clone https://github.com/ncopa/su-exec.git \
|
||||
&& cd su-exec \
|
||||
&& git checkout -q $SUEXEC_VERSION \
|
||||
&& make \
|
||||
&& cd /tmp \
|
||||
&& wget -q -O tini https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini \
|
||||
&& chmod +x tini \
|
||||
&& mv su-exec/su-exec tini /sbin/ # Install them
|
||||
|
||||
# Ports for Swarm TCP, Swarm uTP, API, Gateway, Swarm Websockets
|
||||
EXPOSE 4001
|
||||
EXPOSE 4002/udp
|
||||
EXPOSE 5001
|
||||
EXPOSE 8080
|
||||
EXPOSE 8081
|
||||
|
||||
# Create the fs-repo directory and switch to a non-privileged user.
|
||||
ENV IPFS_PATH /data/ipfs
|
||||
RUN mkdir -p $IPFS_PATH \
|
||||
&& useradd -s /usr/sbin/nologin -d $IPFS_PATH -u 1000 -G users ipfs \
|
||||
&& chown ipfs:users $IPFS_PATH
|
||||
|
||||
# Expose the fs-repo as a volume.
|
||||
# start_ipfs initializes an fs-repo if none is mounted.
|
||||
VOLUME $IPFS_PATH
|
||||
|
||||
# The default logging level
|
||||
ENV IPFS_LOGGING ""
|
||||
|
||||
# This just makes sure that:
|
||||
# 1. There's an fs-repo, and initializes one if there isn't.
|
||||
# 2. The API and Gateway are accessible from outside the container.
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/start_ipfs"]
|
||||
|
||||
# Execute the daemon subcommand by default
|
||||
CMD ["daemon", "--migrate=true"]
|
||||
@ -24,7 +24,7 @@ data/filerand: ../bin/random
|
||||
# just build it every time... this part isn't
|
||||
# even the lengthy part, and it decreases pain.
|
||||
docker_ipfs_image:
|
||||
docker build -t $(IMAGE_NAME) -f Dockerfile.fast .
|
||||
docker build -t $(IMAGE_NAME) -f Dockerfile .
|
||||
docker images | grep $(IMAGE_NAME)
|
||||
|
||||
clean:
|
||||
|
||||
@ -33,7 +33,7 @@ TEST_TESTS_DIR=$(dirname "$TEST_SCRIPTS_DIR")
|
||||
APP_ROOT_DIR=$(dirname "$TEST_TESTS_DIR")
|
||||
|
||||
test_expect_success "docker image build succeeds" '
|
||||
docker_build "$TEST_TESTS_DIR/../Dockerfile.fast" "$APP_ROOT_DIR" >actual ||
|
||||
docker_build "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR" >actual ||
|
||||
test_fsh echo "TEST_TESTS_DIR: $TEST_TESTS_DIR" ||
|
||||
test_fsh echo "APP_ROOT_DIR : $APP_ROOT_DIR" ||
|
||||
test_fsh cat actual
|
||||
|
||||
@ -21,7 +21,7 @@ TEST_TESTS_DIR=$(dirname "$TEST_SCRIPTS_DIR")
|
||||
APP_ROOT_DIR=$(dirname "$TEST_TESTS_DIR")
|
||||
|
||||
test_expect_success "docker image build succeeds" '
|
||||
docker_build "$TEST_TESTS_DIR/../Dockerfile.fast" "$APP_ROOT_DIR" >actual &&
|
||||
docker_build "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR" >actual &&
|
||||
IMAGE_ID=$(tail -n1 actual | cut -d " " -f 3)
|
||||
'
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user