UNCLASSIFIED

Dockerfile 2.8 KB
Newer Older
Humberto Ojeda's avatar
Humberto Ojeda committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
# An example of customising Artifactory using RedHat Univeral Base Image (UBI).
# Using Docker multi stage build.
# Taking the Artifactory file system (including Java for Linux x64)
ARG ARTIFACTORY_BASE_VERSION=6.12.0
ARG UBI_BASE_IMAGE=ubi7-dev-preview/ubi:latest
ARG BASE_IMAGE_REGISTRY=registry.access.redhat.com
# The Artifactory official Docker image
FROM artifactory-pro:${ARTIFACTORY_BASE_VERSION} AS base

# The new image based on registry.access.redhat.com/ubi
FROM ${BASE_IMAGE_REGISTRY}/${UBI_BASE_IMAGE}

MAINTAINER JFrog, Inc. <usfed-cloud-ops@jfrog.com>

ARG ARTIFACTORY_BASE_VERSION
ARG UBI_BASE_IMAGE

LABEL name="JFrog Artifactory Pro" \
      description="JFrog Artifactory Pro image based on the Red Hat Universal Base Image for DSOP." \
      vendor="JFrog" \
      summary="JFrog Artifactory Pro (Red Hat UBI)" \
      maintainer="JFrog, Inc. <usfed-cloud-ops@jfrog.com>" \
      version="6.12.0"

HEALTHCHECK --interval=30s --timeout=5s --start-period=2m --retries=5 \
  CMD curl -I -f http://localhost:8081/artifactory/webapp/#/login || exit 1

# Environment needed for Artifactory
ENV ARTIFACTORY_USER_NAME=artifactory \
    ARTIFACTORY_USER_ID=1030 \
    ARTIFACTORY_HOME=/opt/jfrog/artifactory \
    ARTIFACTORY_DATA=/var/opt/jfrog/artifactory \
    ARTIFACTORY_EXTRA_CONF=/artifactory_extra_conf \
    RECOMMENDED_MAX_OPEN_FILES=32000 \
    MIN_MAX_OPEN_FILES=10000 \
    JAVA_HOME=/java/jdk-11.0.2+9 \
    RECOMMENDED_MAX_OPEN_PROCESSES=1024

# Copy needed file system from base (Artifactory image)
COPY --from=base /opt/jfrog /opt/jfrog
COPY --from=base /var/opt/jfrog/artifactory /var/opt/jfrog/artifactory
COPY --from=base /artifactory_extra_conf /artifactory_extra_conf
COPY --from=base /entrypoint-artifactory.sh /entrypoint-artifactory.sh
COPY --from=base /java /java
COPY --from=base /tmp/plugins /tmp/plugins
# Add license information to meet the Red Hat container image certification requirements
COPY --from=base /opt/jfrog/artifactory/*.html /licenses/
COPY --from=base /opt/jfrog/artifactory/COPYING* /licenses/

# Metadata to let Artifactory know its installation source
RUN mkdir -p ${ARTIFACTORY_DATA}/etc/info
RUN echo "{\"productId\": \"JFrogRedHatUBI\",  \"features\": [{\"featureId\": \"${UBI_BASE_IMAGE}\"}]}" >${ARTIFACTORY_DATA}/etc/info/installer-info.json

# Create the user, fix file system ownership and install needed tools with Yum
# NOTE - wget must be installed for Artifactory HA
RUN useradd -M -s /usr/sbin/nologin --uid ${ARTIFACTORY_USER_ID} --user-group ${ARTIFACTORY_USER_NAME} && \
    chown -R ${ARTIFACTORY_USER_NAME}:${ARTIFACTORY_USER_NAME} ${ARTIFACTORY_HOME} ${ARTIFACTORY_EXTRA_CONF} ${ARTIFACTORY_DATA} /tmp/plugins && \
    chmod -R o-w /opt/jfrog/artifactory

USER $ARTIFACTORY_USER_NAME

VOLUME ${ARTIFACTORY_DATA}
VOLUME ${ARTIFACTORY_EXTRA_CONF}

ENTRYPOINT ["/entrypoint-artifactory.sh"]