Tag: 文件

Dockerfile公开端口为node.js图像

我试图公开端口为node.js图像,但它不暴露在外面的端口: FROM node:4-onbuild ADD package.json /tmp/package.json RUN cd /tmp && npm install RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/ WORKDIR /opt/app ADD . /opt/app EXPOSE 8000:8000 CMD ["npm", "start"] 只有在运行映像时发布端口是可行的 docker运行-p = 8000:8000

是否有可能通过dockerFile构build图像时从.env文件获取值

我正在从dockerFile构build一个图像,并希望通过环境variablesreplace运行语句中的值,例如: – 在下面的语句中$ MYSQL_ROOT_USER通过环境variables进行replace RUN mkdir $DIR \ sed -i "s/root/$MYSQL_ROOT_USER/g" WEB-INF/xxx-servlet.xml \ && sed -i 's/localhost/database/g' WEB-INF/xxxx-servlet.xml \ 如果我定义ENV MYSQL_ROOT_USER = abc,那么这个值将被replace为.ie ENV MYSQL_ROOT_USER=abc RUN mkdir $DIR \ sed -i "s/root/$MYSQL_ROOT_USER/g" WEB-INF/xxx-servlet.xml \ && sed -i 's/localhost/database/g' WEB-INF/xxxx-servlet.xml \ 然而,我感兴趣的是,在.env文件中设置该值,然后取代当我build立图像,但是,如果我在.env文件(而不是在dockerfile)中设置值,它将被replace为空值(可能当在构build层中运行这个语句时,环境variables没有被定义,因此被replace为一个空值) 所以我一直在想有没有什么方法来加载env-varaible在.env文件中获取在构build时加载,因此价值可以被取代?

哪里执行从Dockerfile,主机或中间容器运行命令?

假设这是一个Dockerfile的例子 FROM ubuntu:12.04 MAINTAINER Kimbro Staken version: 0.1 RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/* ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"] 这里是我的问题:我在主机PC上RUN apt-get update ,或创build一个中间容器并运行它,然后提交。

loginDocker

有没有办法logging在dockerfile写入的步骤? 我已经使用数据卷在我的主机上logging我的容器,但是我可以在运行容器时使用初始化数据卷,所以在docker文件中执行的操作不会被logging。 例如,我有一个生成日志的Java代码。 现在,如果在我的dockerfile中写入一行: RUN java-jar xxx.jar 主要类将运行并生成一些日志,如何将这些日志存储到我的主机? 我在运行容器时指定了容量,如下所示: docker run -it -v /var/log/app1:/var/log/app1 prashant23/ubuntu-java:sample-jdbc-project bash 但是在运行dockerfile之后,卷被初始化了,所以日志没有被logging下来? 我可以在dockerfile中分配数据量吗? 或者还有其他办法可以做同样的事情。 谢谢。

如何处理docker工人的环境差异?

我认识到docker是为了减less将应用程序从一个环境转移到另一个环境的摩擦,在很多情况下,像运行时重写环境variables一样很容易。 考虑一种情况,即所有开发发生在公司代理之后,但是图像(或容器或Docker文件)需要被运送到具有不同架构要求的不同环境。 我想到的具体情况是开发环境包括一个非常有侵略性的公司代理。 图像需要(为了实现)在互联网上打服务的能力,所以正在开发的工作Dockerfile看起来像这样: FROM centos ENV http_proxy=my.proxy.url \ https_proxy=my.proxy.url \ # these lines required for the proxy to be trusted, most apps block it otherwise b/c SSL inspection COPY ./certs/*.pem /etc/pki/ca-trust/source/anchors/ RUN /usr/bin/bupdate-ca-trust extract ## more stuff to actually run the app, etc 在生产环境中,没有代理,也不需要提取pem文件。 我认识到,我可以设置环境variables在运行时不使用代理(或者相反,只在开发过程中设置它们),但是对于我所期望的Docker的准封装来说,这两种方式对我来说都是非常泄漏的。 我也认识到这个特殊的例子,复制和提取不会在生产中使用的pem文件并不是什么大事,但是这让我怀疑这个领域的最佳实践,因为我确信这不是什么唯一的例子。 理想情况下,我想让主机pipe理代理需求(实际上是任何环境差异),但是除了通过修改环境variables,我还没有find办法做到这一点。

卡夫卡与docker问题

我试图通过docker-compose文件部署kafka,或者通过安装kafka映像并手动运行它。 当我开始运行kafka服务器(broker)时,这两个步骤都给了我这个错误, INFO启动客户端连接,connectString = 188.226.151.167:2181 sessionTimeout = 6000 watcher=org.I0Itec.zkclient.ZkClient@323b36e0(org.apache.zookeeper.ZooKeeper)[2017-05-16 13:44:49,903]信息等待Keeper状态SyncConnected(org.I0Itec.zkclient.ZkClient)[2017-05-16 13:44:49,909]信息打开套接字连接到服务器188.226.151.167/188.226.151.167:2181。 不会尝试使用SASLvalidation(未知错误)(org.apache.zookeeper.ClientCnxn)[2017-05-16 13:44:55,904]信息终止ZkClient事件线程。 (org.I0Itec.zkclient.ZkEventThread) 任何人都可以清楚地解释发生了什么,并清楚说明如何解决这个问题

如何创build一个MongoDB泊坞窗并保存数据库的configuration?

我很喜欢docker工人,在我上一个项目中开始使用它。 我有一个MongoDB容器,我希望在开发过程中在一些机器之间移动。 我有一些问题, 是否有复制粘贴所有DB数据的选项? 这意味着当我复制图像容器时,我将能够复制数据库的数据? 我试图复制我的机器上的相关目录,但它不能很好地工作(复制主机目录在-v host_directory:container_directory ) 有没有一种方法可以创build一个Dockerfile来构build一个mongo镜像并configuration数据库? 如设置一个新的pipe理员用户,创build数据库 – 所以当我build立docker图像的所有设置和计划将是相同的? 谢谢!

Dockerfile – 本地标准Appengine

我正在寻找与以下的dockerfile,以便webdrivertesting可以在Docker容器中的本地开发服务器上运行。 我将使用这个docker的形象和部署在谷歌计算引擎。 JDK 1.7 MVN 3.3 Selenium Firefox Webdriver 无头火狐47.01 Java Appengine SDK 1.9.49

Docker postgres映像中的无效字节序列

我正在尝试在Docker postgres映像上执行以下操作: FROM docker.io/postgres # Move script to the auto-startup folder of this Docker image RUN mv some_script.sql /docker-entrypoint-initdb.d/some-script.sql # Set the DB variables ENV ENCODING UTF8 ENV POSTGRES_DB some_db ENV POSTGRES_USER some_user ENV POSTGRES_PASSWORD some_password 它创build'some-script.sql'文件的第一部分,直到find以下行: INSERT INTO languages (language, two_character_code, english_name, native_name) VALUES ('es-es', 'es', 'Spanish', 'Español'); 我想这在Español文字上是错的,因为它有一个特殊的字符。 但是,奇怪的是,我可以在Windows上使用pgAdmin在相同的Docker环境中平稳地运行这个确切的文件: 查询成功返回,296毫秒没有结果。 (表成功创build的地方) 我有什么需要改变,使其通过Dockerfile工作?

Docker文件用参数调用PS1文件

我使用'从微软/ iis'和复制PS1文件到图像和Docker运行期间我想要传递参数的值PS1文件,应该直接在PS1文件中replace,我已经尝试在docker文件中定义这些参数作为环境variables,并使用他们直接在PS1文件,但没有去。 看来我无法在Docker RUN期间执行Powershell。 任何帮助? 我正在使用下面的命令来调用powershell ps1文件 CMD ["powershell.exe", "C:\automic\ARA\WebUI\Test.ps1"] CMD ["powershell.exe", "-executionpolicy bypass", "C:\automic\ARA\WebUI\Test.ps1"] 而下面的Docker运行命令我试过了。 Docker run -it <image_id> -e AE_HOSTNAME=test 注意:即使我使用没有命令通过的windowscore映像,microsoft / iis映像也具有默认命令我仍然无法执行powershell文件。