github.com/m3db/m3@v1.5.0/docker/m3dbnode/Dockerfile-setcap (about)

     1  # stage 1: build
     2  FROM golang:1.16.5-alpine3.13 AS builder
     3  LABEL maintainer="The M3DB Authors <m3db@googlegroups.com>"
     4  
     5  # Install deps
     6  RUN apk add --update git make bash
     7  
     8  # Add source code
     9  RUN mkdir -p /go/src/github.com/m3db/m3
    10  ADD . /go/src/github.com/m3db/m3
    11  
    12  # Build m3dbnode binary
    13  RUN cd /go/src/github.com/m3db/m3/ && \
    14      git submodule update --init      && \
    15      make m3dbnode-linux-amd64
    16  
    17  # Stage 2: lightweight "release"
    18  FROM alpine:3.11
    19  LABEL maintainer="The M3DB Authors <m3db@googlegroups.com>"
    20  
    21  ENV GODEBUG madvdontneed=1
    22  
    23  EXPOSE 2379/tcp 2380/tcp 7201/tcp 7203/tcp 9000-9004/tcp
    24  
    25  COPY --from=builder /go/src/github.com/m3db/m3/src/dbnode/config/m3dbnode-local-etcd.yml /etc/m3dbnode/m3dbnode.yml
    26  COPY --from=builder /go/src/github.com/m3db/m3/bin/m3dbnode \
    27    /go/src/github.com/m3db/m3/scripts/m3dbnode_bootstrapped.sh \
    28    /bin/
    29  
    30  # Use setcap to set +e "effective" and +p "permitted" to adjust the SYS_RESOURCE
    31  # so the process can raise the hard file limit with setrlimit.
    32  # Also provide timezone data to allow TZ environment variable to be set
    33  # for parsing relative times such as "9am" correctly and respect
    34  # the TZ environment variable.
    35  RUN apk add --no-cache tzdata curl jq libcap && \
    36    setcap cap_sys_resource=+ep /bin/m3dbnode
    37  
    38  ENV GODEBUG madvdontneed=1
    39  
    40  ENTRYPOINT [ "/bin/m3dbnode" ]
    41  CMD [ "-f", "/etc/m3dbnode/m3dbnode.yml" ]