Questions tagged «dockerfile»

Dockerfile是包含说明以构建Docker映像的文件

7
有没有一种方法可以将Docker映像合并到一个容器中?
我现在有几个Dockerfile。 一种是Cassandra 3.5,它是 FROM cassandra:3.5 我也有一个针对Kafka的Dockerfile,但是要复杂得多。它是,FROM java:openjdk-8-fre并且它运行长命令来安装Kafka和Zookeeper。 最后,我有一个用Scala编写的使用SBT的应用程序。 对于Dockerfile,它是FROM broadinstitute/scala-baseimage,这使我得到了Java 8,Scala 2.11.7和STB 0.13.9。 也许,我不了解Docker的工作原理,但我的Scala程序将Cassandra和Kafka作为依赖项,出于开发目的,我希望其他人能够简单地使用克隆我的仓库,Dockerfile然后再使用Cassandra,Kafka来构建它。 ,Scala,Java和SBT都加入进来,因此它们只能编译源代码。我对此有很多问题。 如何合并这些Dockerfile?我如何简单地将这些东西放入一个环境中?


3
我们可以在通过dockerfile构建docker映像时通过cmd行传递ENV变量吗?
我正在执行一项任务,涉及使用Dockerfile以centOs为基础构建docker映像。dockerfile内的步骤之一需要设置http_proxy和https_proxy ENV变量,以便在代理后面工作。 由于此Dockerfile将由具有不同代理的多个团队使用,因此我想避免不必为每个团队编辑Dockerfile。相反,我正在寻找一种解决方案,允许我在构建时传递ENV变量,例如, sudo docker build -e http_proxy = somevalue。 我不确定是否已经有提供此功能的选项。我想念什么吗?


7
Dockerfile中的条件ENV
是否可以ENV根据构建的值在Dockerfile中有条件地设置变量ARG? 例如:类似 ARG BUILDVAR=sad ENV SOMEVAR=if $BUILDVAR -eq "SO"; then echo "hello"; else echo "world"; fi 更新:基于Mario答案的当前用法: ARG BUILD_ENV=prod ENV NODE_ENV=production RUN if [ "${BUILD_ENV}" = "test" ]; then export NODE_ENV=development; fi 但是,先运行--build-arg BUILD_ENV=test然后进入主机,我仍然可以 docker run -it mycontainer bin/bash [root@brbqw1231 /]# echo $NODE_ENV production



2
Dockerfile:在一行中设置多个环境变量
我给人的印象是,可以如下将环境变量设置在一行上,以最大程度地减少中间图像。 FROM alpine:3.6 ENV RUBY_MAJOR 2.4 \ RUBY_VERSION 2.4.1 \ RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 \ RUBYGEMS_VERSION 2.6.12 \ BUNDLER_VERSION 1.15.3 但是,基于此代码段运行容器并调用,# set |grep RU我看到变量没有被单独分配,而是被组合为单个字符串。 RUBY_MAJOR='2.4 RUBY_VERSION 2.4.1 RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 RUBYGEMS_VERSION 2.6.12 BUNDLER_VERSION 1.15.3' 但是,如果我按如下所示显式设置每个变量,则可以得到预期的输出,并且在调用变量时没有错误。 ENV RUBY_MAJOR 2.4 ENV RUBY_VERSION 2.4.1 ENV RUBY_DOWNLOAD_SHA256 4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654 ENV RUBYGEMS_VERSION 2.6.12 ENV BUNDLER_VERSION 1.15.3 问题:是否可以将环境变量的设置合并在一行上?如果是这样,我该怎么办?这是一个好习惯吗?

1
如何在容器上使用本地文件?
我正在尝试创建一个容器来运行程序。我正在使用预配置映像,现在需要运行程序。但是,这是一个机器学习程序,我需要计算机上的数据集才能运行。 该文件太大,无法复制到容器中。最好是在容器中运行的程序搜索了我计算机本地目录中的数据集,但我不知道该怎么做。 有什么办法可以通过某些docker命令来执行此参考吗?还是使用Dockerfile?

2
Docker复制和更改所有者
鉴于以下Dockerfile FROM ubuntu RUN groupadd mygroup RUN useradd -ms /bin/bash -G mygroup john MKDIR /data COPY test/ /data/test data RUN chown -R john:mygroup /data CMD /bin/bash 在复制的测试目录中,我已将文件许可权设置为770。 如果su john在容器内部进行操作,则无法访问测试目录中的任何文件或子目录。似乎此问题与aufs文件系统中的所有权有关,在该文件系统中,复制的目录仍由root拥有,并且权限设置为770。 是否有解决此问题的方法以正确设置权限?一种可能是在复制之前将原始目录的权限设置为容器用户的uid。但这似乎更像是黑客。


3
Dockerfile可以扩展另一个文件吗?
我有一个像这样的PHP Dockerfile: FROM php:7-fpm ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get install -y git libicu-dev libmagickwand-dev libmcrypt-dev libcurl3-dev jpegoptim RUN pecl install imagick && \ docker-php-ext-enable imagick RUN docker-php-ext-install intl RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install opcache RUN docker-php-ext-install mcrypt RUN docker-php-ext-install curl RUN docker-php-ext-install zip 我想基于第一个创建另一个Dockerfile,但是添加了一些PHP扩展(出于开发目的):Xdebug和其他东西。 我可以创建扩展主Dockerfile的“ dev” …

3
在CI / CD管道实施中为不同租户动态管理Dockerfile
我正在尝试使用Docker,Kubernetes和Jenkins为我的项目实现CI / CD管道。我的应用程序是多租户应用程序,其中数据库应用程序变量对于不同的租户来说都是不同的。 应用策略 在构建Docker映像时,我正在使用Dockerfile。然后将Dockerfile保留在SVN代码存储库中。对于每个租户,代码存储库都是相同的。在构建映像时,那时我需要为不同的租户构建不同的映像。 Dockerfile实现 在我的docker文件中,我添加了如下入口点, ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"] 如果我需要为另一个租户构建Docker映像,则需要添加 -Dspring.profiles.active=tenant2config 因此,Dockerfile中的入口点是动态的。 我的困惑 用于动态管理Dockerfile中的入口点命令吗? 还是我需要为另一个租户添加另一个Dockerfile?是否需要为单独的租户单独运行docker build命令? 我如何找到实现此问题的良好标准方法?

2
Docker&Laravel:配置:错误:未满足软件包要求(oniguruma)
谁能帮助我解决这个问题。 当我尝试从laravel应用的dockerfile创建docker镜像时,出现以下错误: 检查oniguruma ...否配置:错误:不符合包装要求(oniguruma): No package 'oniguruma' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ONIG_CFLAGS and ONIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. 命令'/ bin / …

3
standard_init_linux.go:211:exec用户进程导致“ exec格式错误”
我正在构建用于python脚本的Dockerfile,它将在下面的minikube Windows 10系统中运行 使用以下命令构建docker docker build -t python-helloworld . 并将其加载到minikube docker demon中 docker save python-helloworld | (eval $(minikube docker-env) && docker load) Docker文件 FROM python:3.7-alpine #add user group and ass user to that group RUN addgroup -S appgroup && adduser -S appuser -G appgroup #creates work dir WORKDIR /app #copy …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.