mirror of
https://github.com/minio/minio.git
synced 2024-12-23 21:55:53 -05:00
parent
88938340b3
commit
c46c2a6dd6
11
Dockerfile
11
Dockerfile
@ -8,8 +8,10 @@ ENV CGO_ENABLED 0
|
||||
|
||||
WORKDIR /go/src/github.com/minio/
|
||||
|
||||
COPY dockerscripts/docker-entrypoint.sh dockerscripts/healthcheck.sh /usr/bin/
|
||||
|
||||
RUN \
|
||||
apk add --no-cache ca-certificates && \
|
||||
apk add --no-cache ca-certificates curl && \
|
||||
apk add --no-cache --virtual .build-deps git go musl-dev && \
|
||||
echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf && \
|
||||
go get -v -d github.com/minio/minio && \
|
||||
@ -19,12 +21,11 @@ RUN \
|
||||
|
||||
EXPOSE 9000
|
||||
|
||||
COPY buildscripts/docker-entrypoint.sh /usr/bin/
|
||||
|
||||
RUN chmod +x /usr/bin/docker-entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
|
||||
|
||||
VOLUME ["/export"]
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=5s \
|
||||
CMD /usr/bin/healthcheck.sh
|
||||
|
||||
CMD ["minio"]
|
||||
|
@ -2,7 +2,7 @@ FROM alpine:3.6
|
||||
|
||||
MAINTAINER Minio Inc <dev@minio.io>
|
||||
|
||||
COPY buildscripts/docker-entrypoint.sh buildscripts/healthcheck.sh /usr/bin/
|
||||
COPY dockerscripts/docker-entrypoint.sh dockerscripts/healthcheck.sh /usr/bin/
|
||||
|
||||
RUN \
|
||||
apk add --no-cache ca-certificates && \
|
||||
|
18
buildscripts/healthcheck.sh → dockerscripts/healthcheck.sh
Normal file → Executable file
18
buildscripts/healthcheck.sh → dockerscripts/healthcheck.sh
Normal file → Executable file
@ -15,6 +15,8 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
set -x
|
||||
|
||||
_init () {
|
||||
scheme="http://"
|
||||
address="127.0.0.1:9000"
|
||||
@ -23,32 +25,32 @@ _init () {
|
||||
}
|
||||
|
||||
healthcheck_main () {
|
||||
# In distributed environment like Swarm, traffic is routed
|
||||
# to a container only when it reports a `healthy` status. So, we exit
|
||||
# with 0 to ensure healthy status till distributed Minio starts (120s).
|
||||
# In distributed environment like Swarm, traffic is routed
|
||||
# to a container only when it reports a `healthy` status. So, we exit
|
||||
# with 0 to ensure healthy status till distributed Minio starts (120s).
|
||||
#
|
||||
# Refer: https://github.com/moby/moby/pull/28938#issuecomment-301753272
|
||||
if [ $(( $(date +%s) - start )) -lt 120 ]; then
|
||||
exit 0
|
||||
else
|
||||
# Get the http response code
|
||||
http_response=$(curl -s -k -o /dev/null -I -w "%{http_code}" \
|
||||
http_response=$(curl -H "User-Agent: Mozilla" -s -k -o /dev/null -I -w "%{http_code}" \
|
||||
${scheme}${address}${resource})
|
||||
|
||||
# Get the http response body
|
||||
http_response_body=$(curl -k -s ${scheme}${address}${resource})
|
||||
http_response_body=$(curl -H "User-Agent: Mozilla" -k -s ${scheme}${address}${resource})
|
||||
|
||||
# server returns response 403 and body "SSL required" if non-TLS
|
||||
# server returns response 403 and body "SSL required" if non-TLS
|
||||
# connection is attempted on a TLS-configured server. Change
|
||||
# the scheme and try again
|
||||
if [ "$http_response" = "403" ] && \
|
||||
[ "$http_response_body" = "SSL required" ]; then
|
||||
scheme="https://"
|
||||
http_response=$(curl -s -k -o /dev/null -I -w "%{http_code}" \
|
||||
http_response=$(curl -H "User-Agent: Mozilla" -s -k -o /dev/null -I -w "%{http_code}" \
|
||||
${scheme}${address}${resource})
|
||||
fi
|
||||
|
||||
# If http_repsonse is 200 - server is up. When MINIO_BROWSER is
|
||||
# If http_repsonse is 200 - server is up. When MINIO_BROWSER is
|
||||
# set to off, curl responds with 404. We assume that the server
|
||||
# is up
|
||||
[ "$http_response" = "200" ] || [ "$http_response" = "404" ]
|
Loading…
Reference in New Issue
Block a user