首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在OPEN-SHIFT上安装JIRA-SERVER (docker-image)

如何在OPEN-SHIFT上安装JIRA-SERVER (docker-image)
EN

Stack Overflow用户
提问于 2020-01-02 03:01:36
回答 1查看 500关注 0票数 0

我正在尝试通过docker-image在openshift上安装jira-server。

我从windows的docker- from中提取了图像。添加了简单的dockerfile,包括用户、ROOT等。

在尝试部署pod时。我得到了错误,pod进入循环。错误是:不同位置的权限错误。多次尝试重新定位jira-home目录,但均未成功。

(尝试在封闭网络上安装)

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-07-19 19:44:43

简短的回答

官方的亚特兰大图像与Kubernetes Derivative /e.g。Openshift不兼容,因为它们违反了一些关键概念。例如,在Openshift中,容器使用任意的用户is运行,这意味着一个没有名字的用户正在执行容器中的进程。这是一种安全机制,可防止容器以root身份运行,并限制从容器中逃脱的风险,从而获得群集主机上的权限。

解决方案

您确实需要从头开始重新构建映像。

此外,需要删除启动python脚本试图修改文件系统权限的行为。

  1. 克隆官方回购

https://bitbucket.org/atlassian-docker/docker-atlassian-jira/src/master/

  1. 修改Dockerfile文件并添加到UserGroup创建步骤:

代码语言:javascript
运行
复制
RUN groupadd --gid ${RUN_GID} ${RUN_GROUP} \
    ...
    && chown -R ${RUN_USER}:${RUN_GROUP}            ${JIRA_HOME} \

    # make the image compatible to run as an arbitrary uid
    && chgrp -R 0 /etc/container_id \ 
    && chmod -R g=u /etc/container_id  \
    && chmod -R 460 /etc/container_id  \
    && chgrp -R 0 ${JIRA_INSTALL_DIR} \ 
    && chmod -R g=u ${JIRA_INSTALL_DIR} \
    && chgrp -R 0 ${JIRA_HOME} \
    && chmod -R g=u ${JIRA_HOME}

  1. 修改entrypoint_helpers.py中的gen_cfg函数,并删除末尾的else子句。已在step2中设置了必要的权限。

代码语言:javascript
运行
复制
def gen_cfg(tmpl, target, user='root', group='root', mode=0o644, overwrite=True):
    if not overwrite and os.path.exists(target):
        logging.info(f"{target} exists; skipping.")
        return

    logging.info(f"Generating {target} from template {tmpl}")
    cfg = jenv.get_template(tmpl).render(env)
    try:
        with open(target, 'w') as fd:
            fd.write(cfg)
    except (OSError, PermissionError):
        logging.warning(f"Container not started as root. Bootstrapping skipped for '{target}'")
    # else:
        # set_perms(target, user, group, mode)

使用--build-arg JIRA_VERSION= --build-arg ARTEFACT_NAME

  • Run和
  1. 重新构建映像并享受

细节检查

启动atlassian映像,用户root是第一个进入的,正在进行修改(chown...)然后下拉到用户"jira“。所有这些操作在openshift中都是不可能的。在大多数情况下,从官方镜像开始构建一个新的Dockerfile,并在部署到集群之前修改所需文件和文件夹的权限是解决方案,但更糟糕的是,atlassian选择将必要的目录“挂载”为卷。

他们甚至在评论中提到了这个问题。

代码语言:javascript
运行
复制
VOLUME ["${JIRA_HOME}"] # Must be declared after setting perms

卷挂载后,权限只能在运行时永久修改。这会强制它们在容器启动后使用entrypoint_helpers.py中的python函数重新构建并设置权限。这也是容器失败的地方,出现了几个“权限被拒绝”。

我很乐意在这上面发布一个拉取请求,但不幸的是他们被托管在bitbucket上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59555279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档