Tag: dockerfile

Dockerfile:如何用build-arg的replace环境variables中的占位符?

我有一个Web应用程序,我想运行在Docker上进行testing。 应用程序使用数据库作为存储,数据库的configuration保存在环境variables(JSON)中。 下面你可以看到我的Dockerfile中的envvariables定义(另请参见我的方法) ENV CONFIG '{ \ "credentials":{ \ "hostname": "172.17.0.5", \ "password": "PWD", \ "port": "1234", \ "username": "${USER}" \ }, \ "name":"database", \ "tags":[] \ }, \ … 如果我硬编码数据库的所有参数一切正常,但我不想只改变我的Dockerfile,因为数据库的IP地址已经改变。 因此我想使用Docker构build参数。 我已经尝试了两种方法: 直接引用variables(见“$ {USER}”一行) 使用以下命令replace“PWD”的占位符RUN CONFIG=$(echo $CONFIG | sed 's/PWD/'$db_pwd'/g') 第一种方法不会导致replace,因此$ {USER}是$ {USER}。 第二种方法似乎工作(至less在terminal),但似乎variables分配不起作用。 你有什么想法我可以做这个工作? 随意build议其他方法。 我只是不想在我的Dockerfile中有硬编码参数。 谢谢!

Docker只有在发生变化时才能运行pip requirements.txt。

在Dockerfile中,我有一个安装requirements.txt的图层: FROM python:2.7 RUN pip install -r requirements.txt 当我构builddocker镜像时,它将运行整个过程, 而不pipe对此文件所做的任何更改。 如何确保Docker只运行pip install -r requirements.txt如果文件发生了变化? Removing intermediate container f98c845d0f05 Step 3 : RUN pip install -r requirements.txt —> Running in 8ceb63abaef6 Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30)) Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip Collecting Django==1.8.7 (from -r requirements.txt (line 1))

使用docker-compose构build容器,但稍后使用-it选项运行/ etc / bash?

我正在使用docker-compose进行开发 。 在这个过程中,我经常需要build造5个容器(1个用于web服务器,4个用于postgres,redis,mongo等)。 Web服务器容器configuration为包含其他容器的链接,它具有自己的ENVvariables,来自开发主机的已安装卷。 问题是我不需要Web容器来运行服务器本身。 为此,我需要执行/etc/bash与所有依赖的容器创build后,在Web容器内的选项。 那就是为什么,我的web容器的dockerfile结束于: CMD /bin/true 很明显,这样的容器不会运行,所以我不能使用水手 docker exec -it <CONTAINER ID> /bin/bash 以“input”它并运行node app.js或一些其他任务。 任何方式来构build容器作为docker-compose.yml文件的一部分,但后来用-it选项运行/ etc / bash? 顺便说一句,当然,我可以手动启动一个单独的Web容器 docker run \ –link postgres –link … -e "NODE_ENV=development" \ -e … \ … … .. 但是在这种情况下,我需要在每次打算开发应用程序时将所有链接,env vars,卷等附加为附件。

Docker:RUN touch不会创build文件

在尝试debuggingDockerfile中的RUN语句时,我试图将输出redirect到绑定卷( ./mongo/log )中的文件。 令我惊讶的是,我无法通过RUN命令创build文件,或者使用redirect/附加( > , >> )操作符将另一个命令的输出传送到文件。 然而,我可以通过docker exec -ti mycontainer /bin/shlogin正在运行的容器并从那里发出命令来执行上述任务。 为什么会发生这种行为? 如何将Dockerfile / redirect输出中的文件与文件或运行Dockerfile的控制台联系起来? 这是我的Dockerfile: FROM mongo:3.4 #Installing NodeJS RUN apt-get update && \ apt-get install -y curl && \ curl -sL https://deb.nodesource.com/setup_6.x | bash – && \ apt-get install -y nodejs #Setting Up Mongo WORKDIR /var/www/smq COPY ./mongo-setup.js mongo-setup.js ##for testing […]

泊坞窗。 Spring应用程序。 设置和获取环境variables

我试图dockerize我的Spring应用程序。 问题:我无法从Docker容器中获取Spring应用程序中的环境variables。 Springconfiguration(2个选项,单独尝试) <bean class="java.net.URI" id="dbUrl"> <constructor-arg value="#{systemProperties['JDBC_CONNECTION_STRING']}"/> </bean> <bean class="java.net.URI" id="dbUrl"> <constructor-arg value="#{systemEnvironment['JDBC_CONNECTION_STRING']}"/> </bean> 也尝试在Java中 URI dbUrl = URI.create(System.getProperty("JDBC_CONNECTION_STRING")); 我的dockerconfiguration。 使用docker-compose build和docker-compose up docker-compose build每次更新值。 泊坞窗,compose.yml app: build: . command: catalina.sh run ports: – "8888:8080" links: – postgres volumes: – /usr/bin postgres: image: postgres:9.5 ports: – "5432" volumes: – /var/lib/postgresql/data Dockerfile FROM tomcat:jre8 ENV […]

Jenkins构build+ Docker +自动部署

这是我们需要的: 1.从github repo抓取代码>>下载到jenkins >> Build 2.成功构build时,产生一个/多个docker tomcat容器并在那里部署代码。 我们有一个自定义的tomcat映像(由有效的dockerfile构build)。 我开始了解许多jenkins docker-plugin,但无法理解如何实现的stream程。 任何帮助将不胜感激。 谢谢..

无法在本地运行Docker容器

这是我的Dockerfile: FROM alpine:3.5 RUN apk add –no-cache python3 && \ python3 -m ensurepip && \ rm -r /usr/lib/python*/ensurepip && \ pip3 install –upgrade pip setuptools && \ rm -r /root/.cache # Copy files COPY ./requirements.txt /app/requirements.txt COPY ./main.py /app/main.py # Install deps RUN pip install –upgrade pip RUN pip install –requirement /app/requirements.txt # Set the […]

Docker:来自守护进程的错误响应:rpc错误:code = 2 desc =“oci运行时错误:exec格式错误”

我写了下面的docker文件 FROM cloudera/quickstart MAINTAINER abhishek "http://www.foobar.com" ADD ./SparkIntegrationTestsAssembly.jar / ADD ./entrypoint.sh / ADD ./twitter.avro / EXPOSE 8020 50070 50010 50020 50075 8030 8031 8032 8033 8088 8040 8042 10020 19888 11000 8888 18080 7077 RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] 我使用命令build立了我的图像 docker build –tag foobar:auto . 这个命令的输出是 Sending build context to Docker daemon 93.1 MB […]

如何在docker-compose的docker上安装gulp

我正在使用docker撰写,这是我的yaml文件 web: dockerfile: Dockerfile-dev build: . command: gulp volumes: – .:/app ports: – '9001:9001' 这里是我的docker文件 FROM node:0.12.7 RUN npm install -g bower gulp ADD . /app WORKDIR /app RUN bower install –allow-root 然后我跑 docker-compose -f docker-compose-dev.yml build docker-compose -f docker-compose-dev.yml up 但是我得到以下错误 Recreating web_web_1… Attaching to web_web_1 web_1 | [07:39:08] Local gulp not found in […]

“在jpeg上找不到头文件或库文件”在Alpine Linux上安装Pillow

我想在基于python的Docker容器中运行Python的Scrapy :alpine 。 这是工作之前,但现在我想使用Scrapy的图像pipe道 ,这需要我安装枕头。 作为一个简单的例子,我尝试了下面的Dockerfile : FROM python:alpine RUN apk –update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev curl RUN apk add libjpeg zlib tiff freetype lcms libwebp tcl openjpeg RUN pip install Pillow 但是,当我试图build立这个我得到一个错误,其中包含以下内容: Traceback (most recent call last): File "/tmp/pip-build-ft5yzzuv/Pillow/setup.py", line 744, in <module> zip_safe=not debug_build(), ) File "/usr/local/lib/python3.6/distutils/core.py", line 148, […]