草庐IT

dockerfiles

全部标签

docker - 如何在 Dockerfile 中编写多行命令,同时保留新行?

我想在Dockerfile中编写以下RUN命令。但是,docker并没有保留新行。RUNecho"[repo]\name=YUMRepository\baseurl=https://example.com/packages/\enabled=1\gpgcheck=0">/etc/yum.repos.d/Repo.repoxyz我知道每行末尾的\会转义新行。但是,有什么办法可以写多行来保留新行? 最佳答案 您可以在$'...'中使用所谓的“ANSI-C引用”。Itwasoriginallyaksh93feature但它现在可以在bas

Docker 构建给出 "unable to prepare context: context must be a directory:/Users/tempUser/git/docker/Dockerfile"

我有一个用于构建Ubuntu镜像的Dockerfile。但每当我运行时dockerbuild-tubuntu-test:latest./Dockerfile它在控制台上显示以下错误unabletopreparecontext:contextmustbeadirectory:/Users/tempUser/git/docker/Dockerfile我在MacOsX上。我也尝试过sudo。没有任何效果。 最佳答案 您需要改为指向目录。您不得指定dockerfile。dockerbuild-tubuntu-test:latest.工作。d

Docker 构建给出 "unable to prepare context: context must be a directory:/Users/tempUser/git/docker/Dockerfile"

我有一个用于构建Ubuntu镜像的Dockerfile。但每当我运行时dockerbuild-tubuntu-test:latest./Dockerfile它在控制台上显示以下错误unabletopreparecontext:contextmustbeadirectory:/Users/tempUser/git/docker/Dockerfile我在MacOsX上。我也尝试过sudo。没有任何效果。 最佳答案 您需要改为指向目录。您不得指定dockerfile。dockerbuild-tubuntu-test:latest.工作。d

Dockerfile:在单行中设置多个环境变量

我的印象是可以将环境变量设置在一行中,以尽量减少中间图像。FROMalpine:3.6ENVRUBY_MAJOR2.4\RUBY_VERSION2.4.1\RUBY_DOWNLOAD_SHA2564fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654\RUBYGEMS_VERSION2.6.12\BUNDLER_VERSION1.15.3但是,基于此代码段运行容器并调用#set|grepRU我看到变量没有单独分配,而是组合成一个字符串。RUBY_MAJOR='2.4RUBY_VERSION2.4.1RUBY_DO

Dockerfile:在单行中设置多个环境变量

我的印象是可以将环境变量设置在一行中,以尽量减少中间图像。FROMalpine:3.6ENVRUBY_MAJOR2.4\RUBY_VERSION2.4.1\RUBY_DOWNLOAD_SHA2564fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654\RUBYGEMS_VERSION2.6.12\BUNDLER_VERSION1.15.3但是,基于此代码段运行容器并调用#set|grepRU我看到变量没有单独分配,而是组合成一个字符串。RUBY_MAJOR='2.4RUBY_VERSION2.4.1RUBY_DO

docker - 如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录

我们经常做的一件事是在构建Docker镜像时将所有源代码打包到Dockerfile中。ADD./app我们如何避免简单地包含.git目录?我尝试使用Unix方式处理此问题,使用ADD[^.]*/app/完整示例:docker@boot2docker:/mnt/sda1/tmp/abc$find.../c./.git./Dockerfile./good./good/a1docker@boot2docker:/mnt/sda1/tmp/abc$catDockerfileFROMubuntuADD[^.]*/app/docker@boot2docker:/mnt/sda1/tmp/abc$d

docker - 如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录

我们经常做的一件事是在构建Docker镜像时将所有源代码打包到Dockerfile中。ADD./app我们如何避免简单地包含.git目录?我尝试使用Unix方式处理此问题,使用ADD[^.]*/app/完整示例:docker@boot2docker:/mnt/sda1/tmp/abc$find.../c./.git./Dockerfile./good./good/a1docker@boot2docker:/mnt/sda1/tmp/abc$catDockerfileFROMubuntuADD[^.]*/app/docker@boot2docker:/mnt/sda1/tmp/abc$d

Dockerignore : Ignore everything except a file and the Dockerfile

所以主要目的是将胖jar应用程序docker化并放入Elasticbeanstalk。问题在于上下文。如果我实际上只需要一个jar文件,那么在docker中添加这么多上下文有点愚蠢。我一直在玩弄.dockerignore文件,但我迷路了。我尝试使用gitignore否定,但它不起作用。*!Dockerfile*/!target/target/*!target/*.jar正则表达式也有这种情况,但似乎不支持复杂的正则表达式。^((?!Dockerfile).)*$我也试过在stackoverflow中搜索,找到的都是这两个:Exceptionsin.dockerignoreisthere

Dockerignore : Ignore everything except a file and the Dockerfile

所以主要目的是将胖jar应用程序docker化并放入Elasticbeanstalk。问题在于上下文。如果我实际上只需要一个jar文件,那么在docker中添加这么多上下文有点愚蠢。我一直在玩弄.dockerignore文件,但我迷路了。我尝试使用gitignore否定,但它不起作用。*!Dockerfile*/!target/target/*!target/*.jar正则表达式也有这种情况,但似乎不支持复杂的正则表达式。^((?!Dockerfile).)*$我也试过在stackoverflow中搜索,找到的都是这两个:Exceptionsin.dockerignoreisthere

go - Dockerfile 中 Protobuf 的 Go Get 出错

这是我的Dockerfile:FROMgolangRUNapt-getupdateRUNgoget-ugithub.com/golang/protobuf/{proto,protoc-gen-go}这会产生这个错误:packagegithub.com/golang/protobuf/{proto,protoc-gen-go}:invalidgithub.com/importpath"github.com/golang/protobuf/{proto,protoc-gen-go}"但是,如果我取出RUN指令,并在docker容器中加载/bin/bash,我可以运行goget命令就好了。这