1

我们要运行引导程序默认值artifactory.config.xmlsecurity.import.xml文件来预定义我们的用户和存储库。

我们还想使用持久存储,特别是 PVC,在容器重启之间持久保存工件。

根据他们的文档,您可以通过将配置文件放入其中来设置额外的配置,并将artifactory_extra_config它们复制到$ARTIFACTORY_HOME/etc容器启动时的目录中。但是,Artifactory OSS 似乎并非如此。

根据Helm 图表 Bootstrapping Artifactory IMPORTANT: Bootstrapping Artifactory needs license. Pass license as shown in above section.

文档还提到在目录中放置artifactory.config.import.xml和允许引导。security.import.xml$ARTIFACTORY_HOME/etc

我们从 Artifactory-oss:6.1.0 基础镜像构建了一个自定义 docker 镜像,并简单地将两个配置文件复制到该$ARTIFACTORY_HOME/etc目录,但附加 PVC/var/opt/jfrog/artifactory似乎会覆盖配置,导致引导失败。

我发现 Helm 图表将一个包含引导配置文件的 ConfigMap 挂载到一个/bootstrap/卷上,并将它们复制到/artifactory_extra_conf命令中lifecycle.postStart。这似乎也不起作用。

我注意到ENVArtifactory PRO基础映像包含ARTIFACTORY_EXTRA_CONF=/artifactory_extra_confArtifactory OSS不包含。

我还尝试了一些实验,将自定义映像中的配置文件复制到其他目录并使用 复制加载卷initContainers,但到目前为止,我尝试过的任何尝试都无法让我引导 Arrtifactory OSS 并使用安装在/var/opt/jfrog/artifactory.

我在 Artifactory 的 Dockerfile 中指出,/var/opt/jfrog/artifactory子目录实际上链接到/opt/jfrog/artifactory基础映像中的相应目录。

4

2 回答 2

0

我们的解决方案是修改它们/entrypoint-artifactory.sh并创建自定义图像。

首先,我们添加了一个新copyExtraConf()功能/etnrypoint-artifactory.sh

copyExtraConf () {
    logger "Copying from artifactory_extra_conf"
    chown ${ARTIFACTORY_USER_NAME}:${ARTIFACTORY_USER_NAME} /artifactory_extra_conf/*
    cp -pv /artifactory_extra_conf/* ${ARTIFACTORY_HOME}/etc/
}

然后我们在设置目录和用户后调用它,以防止挂载卷的所有权错误:

printDockerFileLocation
checkULimits
checkMounts
setupDataDirs
setupArtUser

# CUSTOM:START - do this after setupDataDirs and setupArtUser so we can chown and copy our files.
copyExtraConf
# CUSTOM:END

setAccessCreds
setMasterKey
setupPermissions
setDBType
addExtraJavaArgs

Dockerfile:

# Dockerfile
#
# NOTE:
# entrypoint-artifactory.sh is based on the one from artifactory-oss:6.1.0
# When changing versions, be sure to compare entrypoint-artifactory-ta.sh to entrypoint-artifactory.sh
FROM docker.bintray.io/jfrog/artifactory-oss:6.1.0

COPY entrypoint-artifactory.sh /entrypoint-artifactory.sh
RUN chmod +x /entrypoint-artifactory.sh

ENTRYPOINT ["/entrypoint-artifactory.sh"]

COPY configs/artifactory.config.import.xml /artifactory_extra_conf/artifactory.config.import.xml
COPY configs/security.import.xml /artifactory_extra_conf/security.import.xml
于 2018-11-01T20:54:03.007 回答
0

我必须成为 root 才能交换 /entrypoint-artifactory.sh

FROM docker.bintray.io/jfrog/artifactory-oss:6.16.0
USER root
COPY entrypoint-artifactory.sh /entrypoint-artifactory.sh
RUN chmod +x /entrypoint-artifactory.sh

COPY configs/artifactory.config.import.xml /artifactory_extra_conf/
COPY configs/security.import.xml /artifactory_extra_conf/

USER artifactory
ENTRYPOINT ["/entrypoint-artifactory.sh"]
于 2020-01-07T17:52:13.333 回答