运行多个命令来配置应用程序的替代方法



当我开发我的应用程序时,我有很多事情要做。它们通常是微服务,每个都有自己的构建工具。例如,我必须为hugo运行一个构建脚本,为webpack运行一个构建脚本,以及一些gulp任务。我还必须生成一些文件、密钥等。

必须手动运行这些是一个巨大的痛苦。当我在开发和暂存中进行测试时,我会不断重建运行相同命令的 docker 容器。它变得痛苦。

有什么工具可以帮助解决这个问题吗?我可以在哪里运行一个命令并让它在我的应用程序中重建所有内容?bash 脚本可以工作,但这不是一个选择。

我见过人们像在 C 中使用构建脚本一样,但我找不到类似的东西来开发 DevOps。也许 docker 有一个工具?

你可能想要构建容器而不是使用映像。

我假设你正在使用docker-composedocker stack deploy来启动容器。在这两种情况下,您都有一个描述服务的.yaml文件。让我们假设以下内容是你现在配置的一部分,部署一个服务,你需要在其中运行 webpack 的构建脚本,并且你使用 Node.js 映像作为你的基础(你可以很容易地适应你的实际场景(:

# ...
services:
webpack:
image: node:8.12.0
# ...
# ...

您可以指定构建上下文,而不是直接使用映像:

# ...
services:
webpack:
build:
context: ./docker/webpack
# ...
# ...
# ...

相应地创建目录结构,以便有一个docker/webpack文件夹。在该文件夹中,使用要运行的命令创建build-script.shshell 脚本,并创建一个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 updocker stack deploy ...时,它将构建一个已经使用build-script.sh脚本的内容初始化的容器。显然,您可以使用此Dockerfile做更多的事情,但是对于您的用例,您可以从非常简单的事情开始。您甚至可以避免完全创建脚本,并在一个巨大的RUN语句中运行所有命令(在除最后一行之外的每一行末尾使用,并使用&&分隔不同的命令(。


稍后,您甚至可以通过将此Dockerfile上传到github来自己构建图像,并在 hub.docker.com 上创建一个帐户并将其链接到您的github。你可以称它为类似BugHunterUK-dev-environment之类的东西,并在你的Yaml文件中使用image: BugHunterUK-dev-environment:latest

相关内容

  • 没有找到相关文章

最新更新