gpt4 book ai didi

git - docker 在包含 Dockerfile 的私有(private) git 存储库上构建?

转载 作者:行者123 更新时间:2023-12-02 18:33:32 28 4
gpt4 key购买 nike

我在 github.com 上有一个私有(private) git 存储库我想自动化 docker build使用 Dockerfile 处理.我天真地认为拥有 Dockerfile 的最佳位置位于我的仓库的根文件夹中。例子:

git clone ssh://git@github.com/avilella/bioboxes_playground
cd bioboxes_playground
ls Dockerfile
Dockerfile

因此,对于外部依赖项,我使用 apt-get install 安装它们或下载 tar.gz 并在 docker build 期间安装它们.

我不清楚的是如何将 repo 中的代码暴露给 docker build 中的说明。 .

我添加了一个简单的 hello_world.c存储库中的示例,我想在 docker build 期间编译.见下文:
FROM debian:wheezy
MAINTAINER Foo Bar, foo@bar.com

ENV ORG foo
ENV APP bar
ENV INSTALL_DIR /opt/${ORG}/${APP}

ENV PACKAGES wget binutils make csh g++ sed gawk perl zlib1g-dev
RUN apt-get update -y && apt-get install -y --no-install-recommends ${PACKAGES}

ENV SEQTK https://github.com/avilella/seqtk/archive/sgdp.tar.gz

ENV THIRDPARTY_DIR ${INSTALL_DIR}/thirdparty

RUN mkdir -p ${THIRDPARTY_DIR}
RUN cd ${THIRDPARTY_DIR}

# SEQTK

RUN mkdir -p ${THIRDPARTY_DIR}/seqtk && cd ${THIRDPARTY_DIR}/seqtk &&\
wget --quiet --no-check-certificate ${SEQTK} --output-document - |\
tar xzf - --directory . --strip-components=1 && \
make

# COMPILE HELLO_WORLD

RUN gcc hello_world.c -o ${INSTALL_DIR}/helloworld

# define an entry point...

我认为可行的选项:
  • 当做docker build我以某种方式将 repo 文件夹安装在 docker 内,以便它看到我刚刚从我的 repo 克隆的代码,在本例中为 hello_world.c文件,然后它将跟随Dockerfile指示。我怎么做?
  • 我认为的另一个选择是做一个新的 git clone作为 Dockerfile 的一部分指示。
  • 第三种选择是发布我的 git 存储库并使用 wget 下载该版本的副本。作为 Dockerfile操作说明。

  • 以下哪一个是最好的方法?有更好的做法的想法吗?

    最佳答案

    1:我同意本·威利 ADD 在这里是正确的选择。然后您可以使用 docker build .在存储库的根文件夹中。

    2 和 3:每次你对 hello_world.c 进行更改时,你都必须提交并推送到你的远程(当这是一个私有(private)仓库时,你还必须添加 ssh key )。对您来说可能没问题,但是在本地修复错误时非常不切实际。

    我和你有同样的想法,我花了一些时间才意识到 docker 还不能很好地处理这个问题。

    你可以看看我的 shell 脚本 (https://github.com/Equanox/docker-auto-build)。它使您能够轻松地在 git 存储库中构建和运行 dockerfile。您甚至可以将常用的运行命令存储在 dockerfile 中。您会在此处找到如何使用它的示例。

    关于git - docker 在包含 Dockerfile 的私有(private) git 存储库上构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28829117/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com