UNCLASSIFIED

Dockerfile 3.11 KB
Newer Older
sunny@peacehaven.co's avatar
sunny@peacehaven.co committed
1
ARG BASE_REGISTRY=registry1.dsop.io
2
ARG BASE_IMAGE=ironbank/redhat/ubi/ubi8
3
ARG BASE_TAG=8.3
4

Daniel Miakotkin's avatar
Daniel Miakotkin committed
5
FROM releases-docker.jfrog.io/jfrog/artifactory-pro:7.12.8 AS base
Humberto Ojeda's avatar
Humberto Ojeda committed
6

Matt Vasquez's avatar
Matt Vasquez committed
7
FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG}
Humberto Ojeda's avatar
Humberto Ojeda committed
8

9

Matt Vasquez's avatar
Matt Vasquez committed
10
USER root
Humberto Ojeda's avatar
Humberto Ojeda committed
11

Matt Vasquez's avatar
Matt Vasquez committed
12
# Set vars
Daniel Miakotkin's avatar
Daniel Miakotkin committed
13
ARG ARTIFACTORY_VERSION=7.12.8
14
ENV JF_ARTIFACTORY_USER=artifactory \
Matt Vasquez's avatar
Matt Vasquez committed
15 16
    ARTIFACTORY_VERSION=${ARTIFACTORY_VERSION} \
    ARTIFACTORY_BOOTSTRAP=/artifactory_bootstrap \
17 18
    JF_PRODUCT_HOME=/opt/jfrog/artifactory \
    JF_PRODUCT_DATA_INTERNAL=/var/opt/jfrog/artifactory \
Humberto Ojeda's avatar
Humberto Ojeda committed
19 20
    RECOMMENDED_MAX_OPEN_FILES=32000 \
    MIN_MAX_OPEN_FILES=10000 \
Matt Vasquez's avatar
Matt Vasquez committed
21
    RECOMMENDED_MAX_OPEN_PROCESSES=1024
Humberto Ojeda's avatar
Humberto Ojeda committed
22

Matt Vasquez's avatar
Matt Vasquez committed
23 24 25 26 27 28 29 30
COPY --from=base /opt/jfrog/artifactory/ /opt/jfrog/artifactory/
COPY --from=base /var/opt/jfrog/artifactory/ /var/opt/jfrog/artifactory/
COPY --from=base /opt/jfrog/artifactory/app/third-party /opt/jfrog/artifactory/app/third-party
COPY ./scripts/entrypoint-artifactory.sh /
COPY ./scripts/artifactory.sh /opt/jfrog/artifactory/app/bin/
COPY ./scripts/artifactoryCommon.sh /opt/jfrog/artifactory/app/bin/
COPY ./scripts/installerCommon.sh /opt/jfrog/artifactory/app/bin/
COPY ./scripts/migrate.sh /opt/jfrog/artifactory/app/bin/
Humberto Ojeda's avatar
Humberto Ojeda committed
31

Matt Vasquez's avatar
Matt Vasquez committed
32 33 34 35 36 37 38
# Handle permissions and ownership in ${JF_PRODUCT_HOME}/app
# set artifactory home and data
# set docker as distribution for callhome
# Handle run with custom uid and gid with no volume mounted
# Handle bootstrap directory permissions
RUN groupadd -g 1030 ${JF_ARTIFACTORY_USER} && \
    useradd -d "$JF_PRODUCT_HOME" -u 1030 -g 1030 -m -s /bin/bash ${JF_ARTIFACTORY_USER} && \
Matt Vasquez's avatar
Matt Vasquez committed
39
    dnf upgrade -y && \
Matt Vasquez's avatar
Matt Vasquez committed
40
    dnf install -y procps-ng net-tools cronie hostname --setopt=tsflags=nodocs &&  \
Matt Vasquez's avatar
Matt Vasquez committed
41
    dnf clean all && \
Matt Vasquez's avatar
Matt Vasquez committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    rm -rf /var/cache/dnf && \
    chown -R ${JF_ARTIFACTORY_USER}:${JF_ARTIFACTORY_USER} ${JF_PRODUCT_HOME}  && \
    chmod 777 ${JF_PRODUCT_HOME}/app/run && \
    chmod -R 755 ${JF_PRODUCT_HOME}/app/artifactory/tomcat && \
    chmod -R 777 ${JF_PRODUCT_HOME}/app/artifactory/tomcat/webapps && \
    chmod -R go+w ${JF_PRODUCT_HOME}/app ${JF_PRODUCT_HOME}/app/bin ${JF_PRODUCT_HOME}/app/artifactory/tomcat/conf && \
    chmod +x ${JF_PRODUCT_HOME}/app/bin/*.sh ${JF_PRODUCT_HOME}/app/artifactory/tomcat/bin/*.sh && \
    ln -s ${JF_PRODUCT_DATA_INTERNAL} ${JF_PRODUCT_HOME}/var && \
    chown -R ${JF_ARTIFACTORY_USER}:${JF_ARTIFACTORY_USER} ${JF_PRODUCT_DATA_INTERNAL} /entrypoint-artifactory.sh && \
    chmod +x /entrypoint-artifactory.sh && \
    chown ${JF_ARTIFACTORY_USER}:${JF_ARTIFACTORY_USER} ${JF_PRODUCT_HOME}/app && \
    chmod -R 777 ${JF_PRODUCT_DATA_INTERNAL} && \
    mkdir -p ${ARTIFACTORY_BOOTSTRAP} && \
    chmod -R 766 ${ARTIFACTORY_BOOTSTRAP} && \
    chown -R ${JF_ARTIFACTORY_USER}:${JF_ARTIFACTORY_USER} ${ARTIFACTORY_BOOTSTRAP}
Matt Vasquez's avatar
Matt Vasquez committed
57

Matt Vasquez's avatar
Matt Vasquez committed
58 59
# Expose Router's port
EXPOSE 8081
Humberto Ojeda's avatar
Humberto Ojeda committed
60

Matt Vasquez's avatar
Matt Vasquez committed
61 62
# The user that will run the container and artifactory
USER ${JF_ARTIFACTORY_USER}
Humberto Ojeda's avatar
Humberto Ojeda committed
63

Matt Vasquez's avatar
Matt Vasquez committed
64
# Default mount for data directory
65
VOLUME ${JF_PRODUCT_DATA_INTERNAL}
Humberto Ojeda's avatar
Humberto Ojeda committed
66

Matt Vasquez's avatar
Matt Vasquez committed
67 68 69 70 71 72 73 74
# Change workdir to Artifactory Home
WORKDIR ${JF_PRODUCT_HOME}

HEALTHCHECK --interval=30s --timeout=5s --start-period=2m --retries=5 \
  CMD curl -I -f http://localhost:8082/ui/ || exit 1

# Start the simple standalone mode of Artifactory
ENTRYPOINT ["/entrypoint-artifactory.sh"]