使用Docker镜像重启获取最新git代码的最佳方法是什么?

时间:2015-10-10 21:32:25

标签: docker dockerfile

在每个Docker镜像构建之间,唯一改变的是源代码。现在,我每次都重建图像,然后推送到服务器。此操作需要时间。

更新服务器上的代码的最佳做法是什么?每次Docker重启时我都在考虑运行一些命令,如下所示:

RUN git clone git@bitbucket.org/{user}/{repo}

这是一个好习惯吗?然后源代码将在主机上;它安全吗?

这是我当前的Docker文件:

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y nodejs npm git
RUN npm install -g bower
RUN ln /usr/bin/nodejs /usr/bin/node

# Add the current working folder as a mapped folder
ADD app.js /opt/myapp/app.js
ADD dist /opt/myapp/dist
ADD package.json /opt/myapp/package.json
ADD bower.json /opt/myapp/bower.json

# Set the current working directory to the new mapped folder.
WORKDIR /opt/myapp

# Install dependencies
RUN npm install
RUN bower install --allow-root --config.interactive=false

# Expose the node.js port to the Docker host.
EXPOSE 3005

# This is the stock express binary to start the app.
CMD [ "node", "app.js"]

1 个答案:

答案 0 :(得分:2)

我最近有一个很好的做法,因为我上周刚刚创建了一个docker:源代码托管在github上,测试使用CircleCI,在DockerHub上自动构建,在Tutum.co上自动部署,最后运行我自己的服务器(其中一些我从未登录过)

每次我将代码推送到github时,github都会通过webhook向Tutum发送通知。然后Tutum将获得源代码,开始构建和测试我的新docker镜像。如果测试通过,图像将被推送到我的私人注册表。然后tutum会将重新部署通知发送到我的docker服务,我的docker将拉出新图像,终止旧容器,为我重新启动带有最新图像的新容器。

以上都是完全自动的。运行“git push”命令后,一切都会发生。

我个人使用tutum非常沉重,所以我建议你阅读一篇关于Tutum Automated Build的文章:https://support.tutum.co/support/solutions/articles/5000638474-automated-builds

另外,你可以看一下我的码头工具,我可以用这些小玩具项目(CI / CD)找到所有我能找到的东西。 :) https://github.com/zixia/docker-simple-mail-forwarder