开发应用程序时,我会遇到很多事情。它们通常是微服务,每个都有自己的构建工具。例如,我必须为hugo
运行一个构建脚本,为webpack
运行一个构建脚本,以及一些gulp
任务。我还必须生成一些文件,密钥等。
必须手动运行它们是一个巨大的痛苦。当我在开发人员中进行测试并进行测试时,我会不断重建运行相同命令的Docker容器。会很痛苦的。
是否有任何工具可以帮助您解决此问题?在哪里可以运行一个命令并重新构建应用程序中的所有内容?可以使用bash脚本,但这不是一个选择。
我已经看到人们像在C中一样使用构建脚本,但是对于devop,我找不到任何类似的东西。也许Docker为此提供了工具?
答案 0 :(得分:1)
您可能想构建容器而不是使用图像。
我假设您使用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
语句中运行所有命令(在每行的末尾使用\
,最后一行除外,并用{{1 }}。
稍后,您甚至可以通过将此&&
上传到github,并在hub.docker.com上创建一个帐户并将其链接到您的github来自己构建映像。您可以将其命名为Dockerfile
之类的名称,然后在Yaml文件中使用BugHunterUK-dev-environment
。