UNCLASSIFIED

Dockerfile 3 KB
Newer Older
Humberto Ojeda's avatar
Humberto Ojeda committed
1 2 3
# 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)
4 5 6 7
ARG BASE_REGISTRY=nexus-docker.52.61.140.4.nip.io
ARG BASE_IMAGE=redhat/ubi/ubi7
ARG BASE_TAG=7.7

Humberto Ojeda's avatar
Humberto Ojeda committed
8
ARG ARTIFACTORY_BASE_VERSION=6.12.0
9
ARG UBI_BASE_IMAGE=${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG}
Humberto Ojeda's avatar
Humberto Ojeda committed
10
ARG BASE_IMAGE_REGISTRY=registry.access.redhat.com
11 12

# Use jfrog/artifactory-pro:6.12.0 downloaded from docker.bintray.io via prebuild.sh as builder image
13
FROM nexus-docker.52.61.140.4.nip.io/builder-jfrog/artifactory-pro:6.12.0 AS base
Humberto Ojeda's avatar
Humberto Ojeda committed
14 15

# The new image based on registry.access.redhat.com/ubi
16
FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG}
Humberto Ojeda's avatar
Humberto Ojeda committed
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 66 67 68 69 70

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"]