Docker 运行多个命令以配置应用程序的替代方法
当我开发我的应用程序时,我有很多事情要做。它们通常是微型服务,每个都有自己的构建工具。例如,我必须为Docker 运行多个命令以配置应用程序的替代方法,docker,build,devops,build-tools,Docker,Build,Devops,Build Tools,当我开发我的应用程序时,我有很多事情要做。它们通常是微型服务,每个都有自己的构建工具。例如,我必须为hugo运行一个构建脚本,为webpack运行一个构建脚本,以及一些gulp任务。我还需要生成一些文件、密钥等 手动运行这些程序是一件非常痛苦的事情。当我在dev和staging中测试时,我不断地重建运行相同命令的docker容器。它变得很痛 有没有什么工具可以帮你?我可以在哪里运行一个命令并让它重建应用程序中的所有内容?bash脚本可以工作,但这不是一个选项 我见过有人像在C中一样使用构建脚本,
hugo
运行一个构建脚本,为webpack
运行一个构建脚本,以及一些gulp
任务。我还需要生成一些文件、密钥等
手动运行这些程序是一件非常痛苦的事情。当我在dev和staging中测试时,我不断地重建运行相同命令的docker容器。它变得很痛
有没有什么工具可以帮你?我可以在哪里运行一个命令并让它重建应用程序中的所有内容?bash脚本可以工作,但这不是一个选项
我见过有人像在C中一样使用构建脚本,但我找不到类似于devops的东西。也许docker有这样一个工具?您可能希望构建容器,而不是使用图像 我假设您正在使用
docker compose
或docker stack deploy
启动容器。在这两种情况下,您都有一个描述服务的.yaml
文件。让我们假设下面是您当前配置的一部分,要部署一个服务,您需要在其中运行webpack的构建脚本,并且您使用Node.js映像作为基础(您可以轻松地根据实际场景进行调整):
您可以指定生成上下文,而不是直接使用图像:
# ...
services:
webpack:
build:
context: ./docker/webpack
# ...
# ...
# ...
相应地创建一个目录结构,以便有一个docker/webpack
文件夹。在该文件夹中,使用要运行的命令创建一个build script.sh
shell脚本,并创建一个文件。此文件应如下所示:
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,并在其上创建帐户并将其链接到github,自己构建一个映像。您可以将其称为BugHunterUK-dev-environment
之类的名称,并在Yaml文件中使用image:BugHunterUK-dev-environment:latest
。出于好奇,为什么bash脚本不起作用?检查docker命令
参数。您可以告诉docker在创建服务时运行命令,这将允许您在每次重新部署时自动运行bash脚本,而不是手动执行。我见过的大多数使用该工具集的应用程序使用并运行类似于npm build
的程序来运行所有这些任务。Make或shell脚本也可以正常工作。
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