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

时间:2018-10-10 17:47:24

标签: docker build devops build-tools

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

必须手动运行它们是一个巨大的痛苦。当我在开发人员中进行测试并进行测试时,我会不断重建运行相同命令的Docker容器。会很痛苦的。

是否有任何工具可以帮助您解决此问题?在哪里可以运行一个命令并重新构建应用程序中的所有内容?可以使用bash脚本,但这不是一个选择。

我已经看到人们像在C中一样使用构建脚本,但是对于devop,我找不到任何类似的东西。也许Docker为此提供了工具?

1 个答案:

答案 0 :(得分:1)

您可能想构建容器而不是使用图像。

我假设您使用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.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 updocker stack deploy ...时,它将建立一个已经用build-script.sh脚本的内容初始化的容器。显然,您可以使用Dockerfile做更多的事情,但是对于您的用例,您可以从一些简单的事情开始。您甚至可以完全避免创建脚本,并在一个巨大的RUN语句中运行所有命令(在每行的末尾使用\,最后一行除外,并用{{1 }}。


稍后,您甚至可以通过将此&&上传到github,并在hub.docker.com上创建一个帐户并将其链接到您的github来自己构建映像。您可以将其命名为Dockerfile之类的名称,然后在Yaml文件中使用BugHunterUK-dev-environment