当我开发我的应用程序时,我有很多事情要做。它们通常是微服务,每个都有自己的构建工具。例如,我必须为hugo
运行一个构建脚本,为webpack
运行一个构建脚本,以及一些gulp
任务。我还必须生成一些文件、密钥等。
必须手动运行这些是一个巨大的痛苦。当我在开发和暂存中进行测试时,我会不断重建运行相同命令的 docker 容器。它变得痛苦。
有什么工具可以帮助解决这个问题吗?我可以在哪里运行一个命令并让它在我的应用程序中重建所有内容?bash 脚本可以工作,但这不是一个选择。
我见过人们像在 C 中使用构建脚本一样,但我找不到类似的东西来开发 DevOps。也许 docker 有一个工具?
你可能想要构建容器而不是使用映像。
我假设你正在使用docker-compose
或docker stack deploy
来启动容器。在这两种情况下,您都有一个描述服务的.yaml
文件。让我们假设以下内容是你现在配置的一部分,部署一个服务,你需要在其中运行 webpack 的构建脚本,并且你使用 Node.js 映像作为你的基础(你可以很容易地适应你的实际场景(:
# ...
services:
webpack:
image: node:8.12.0
# ...
# ...
您可以指定构建上下文,而不是直接使用映像:
# ...
services:
webpack:
build:
context: ./docker/webpack
# ...
# ...
# ...
相应地创建目录结构,以便有一个docker/webpack
文件夹。在该文件夹中,使用要运行的命令创建build-script.sh
shell 脚本,并创建一个Dockerfile
文件。此文件应如下所示:
FROM node:8.12.0
COPY build-script.sh /tmp/build-script.sh
RUN npm install --save-dev webpack
&& /bin/sh /tmp/build-script.sh
然后,当您运行docker-compose up
或docker stack deploy ...
时,它将构建一个已经使用build-script.sh
脚本的内容初始化的容器。显然,您可以使用此Dockerfile
做更多的事情,但是对于您的用例,您可以从非常简单的事情开始。您甚至可以避免完全创建脚本,并在一个巨大的RUN
语句中运行所有命令(在除最后一行之外的每一行末尾使用,并使用
&&
分隔不同的命令(。
稍后,您甚至可以通过将此Dockerfile
上传到github来自己构建图像,并在 hub.docker.com 上创建一个帐户并将其链接到您的github。你可以称它为类似BugHunterUK-dev-environment
之类的东西,并在你的Yaml文件中使用image: BugHunterUK-dev-environment:latest
。