gpt4 book ai didi

git - 如何为同步源代码构建 docker 容器?

转载 作者:行者123 更新时间:2023-12-02 21:25:38 25 4
gpt4 key购买 nike

我想为 nodejs-bower-grunt 构建一个容器,但要使我的源代码与 git 存储库(在本例中为 Bitbucket)保持同步。这个想法是为我的团队提供一个容器,这样每个开发人员都不需要在他们的环境中安装这些包。他们没有安装 nodejs、bower 和 grunt 来运行应用程序的前端,而是使用容器来管理它们并专注于源代码。所以这是我的 DockerFile:

FROM    ubuntu:14.04

RUN apt-get update
RUN apt-get install -y nodejs npm git git-core
RUN ln -s /usr/bin/nodejs /usr/bin/node

WORKDIR /app

ADD package.json /app/
ADD bower.json .bowerrc* /app/

RUN npm install -g bower
RUN npm install -g grunt-cli
RUN npm install
RUN bower install --allow-root

CMD ["grunt", "serve"]

EXPOSE 9000
EXPOSE 35729

所以我构建了容器,然后使用以下代码运行:
docker run -ti -p 9000:9000 -p 35729:35729 -d -v /home/MY_USER/Projects/app:/app --name app --net=host my_repository/app

期望 VOLUME 参数将源代码注入(inject)容器中的/app 文件夹,而不替换之前在 DockerFile 中配置的所有内容。根据 official documentation ,内容应该被保留:
“/src/webapp 挂载覆盖但不删除预先存在的内容”,但事实证明,当我检查正在运行的容器时,DockerFile 挂载的内容被参数传递的 -v 文件夹内容替换。一种解决方案是将所有应用程序内容复制到容器本身,然后运行容器,但这种解决方案对于开发项目来说是不切实际的,因为应用程序中的每次更新都需要构建另一个容器。所以,我的问题是:如何构建这个容器,使主机源代码中的每个更新都反射(reflect)正在运行的容器?

最佳答案

我找到了一个解决方案,基于 this邮政。运行容器的正确方法应该是:

docker run -ti -p 9000:9000 -p 35729:35729 -d -v /home/MY_USER/Projects/app/app:/app/app --name app --net=host my_repository/app

此命令告诉 docker 初始化容器并仅在 app 子文件夹而不是应用程序的整个根结构中安装卷,这样可以保留在构建过程中进行的所有配置。

关于git - 如何为同步源代码构建 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38897572/

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