Tag: docker文件docker 撰写

获取composer php(PHP的依赖pipe理器)运行在docker上的图像构build

注:我不再使用这个环境,所以我无法testing答案并接受答案。 对不起。 TL; DR你能指点我一个使用composer php处理PHP依赖关系的docker镜像的例子吗? 我在这篇文章中的所有问题都是关于composer php的PHP依赖工具 而不是 dockercomposer php的后继者。 我试图build立我自己的docker图像来运行wordpress作为一个composer php依赖项安装 。 我正在使用docker php image作为基础来构build一个docker镜像,我需要做的是安装composer并运行一个composer update命令,不pipe是在图像创build时间还是图像构build时间(不知道是否两者都是好)。 我可以通过手动执行所有步骤(运行Docker镜像,抨击它,复制和粘贴每一步)来运行一切。 但是当我将所有这些步骤放在一个Dockerfile上时,我不会让作曲者编写这些文件。 一段时间以来,我一直试图获得一个最小的失败的例子,但是我得到的那个并不是最小的。 我的testing是由以下内容组成(下面的链接到相关的github仓库) Dockerfile NFORMATION ~~~# # based on # https://hub.docker.com/r/richarvey/nginx-php-fpm/ # and # https://hub.docker.com/_/wordpress/ FROM php:7.0.2-apache MAINTAINER Miquel Adell <miquel@miqueladell.com> ENV WORDPRESS_VERSION 4.4.1 #~~~ DEPENDENCIES ~~~# # Add PHP repository to apt source RUN apt-get update […]

我应该如何根据这个架构Dockerise MEAN堆栈?

我是Docker的新手。 你能看看我下面的附件吗? 计划 我想要的是能够在船上安装当前软件的一定数量的孤立docker集装箱: NodeJs(npm,pm2,grunt-cli等) MongoDB的 其他软件(cron,ffmpeg等) 每个隔离的容器都与应用程序代码链接到相同的卷,但是以不同的ENVvariables启动:expressJS端口,db名称等等。您find了我,对不对? 例如,我们有2个独立的容器: stack1和stack2 。 他们两个都使用与主机上位于/ home / user / app_code /(volume mount)的应用程序代码相同的音量。 stack1在3001端口上启动,并连接到其在​​/ home / user / db1(卷装载)上使用DB的mongoDB服务器,并具有位于/ home / user / storage1的多媒体专用存储 在stack2在3002端口上启动,并连接到在/ home / user / db2(卷装载)上使用数据库的mongoDB服务器,并具有位于/ home / user / storage2的多媒体专用存储 当然stack1和stack2放在Nginx单容器反向代理的后面。 这个问题 实施我的计划最好的方法是什么? 据我了解,在我的情况下, docker-compose不是合适的工具。 最后,我可以构build只有nodeJs图像和Mongo图像组成的堆栈。 但是如何处理ffmpeg和cron? 如何繁殖堆栈? 有可能把它们放在罪恶的Nginx容器之后吗? 第二种方法是采用“phusion / baseimage-docker” ,手动安装NodeJs,Mongodb,ffmpeg,将这个容器相乘并隐藏每个后面的Nginx的代理。 但是这种方法有点违背了编写Dockerfiles的最佳实践 […]

具有入口点可变扩展和CMD参数的Docker容器

我想创build一个Docker Image作为一个可执行文件,用户将一个令牌作为环境variables传递给它。 可执行文件有子命令,用户应该通过docker CMD(通过Envauthenticationgit)。 但是,Docker不会将CMD追加到入口点。 我的Dockerfile的相关部分如下所示: ENTRYPOINT ["/bin/sh", "-c", "/usr/bin/mycmd –token=$MY_TOKEN"] CMD ["pull", "stuff"] 所以如果这个容器被执行没有任何CMD覆盖和secret作为MY_TOKENvariables,我期望 mycmd –token=secret pull stuff 被执行。 如果用户使用覆盖来启动容器,例如 docker run -it -e MY_TOKEN=secret myimage push junk 我期望 mycmd –token=secret push junk 被执行。 但是,如上所述,只有mycmd –token=secret会被执行,CMD会被忽略 – 无论我是在启动过程中覆盖还是将其设置在Dockerfile中。

在docker中安装pip

我无法在Docker中安装点子。 这是我的Dockerfile: FROM ubuntu:14.04 # Install dependencies RUN apt-get update -y RUN apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql python3.4 python-pip build设时,我得到: Sending build context to Docker daemon 109.6 kB Step 1 : FROM ubuntu:14.04 —> b549a9959a66 Step 2 : RUN apt-get update -y —> Using cache —> 84577471562c Step 3 : […]

eval“$(docker-machine env default)”

我有docker-compose启动docker的问题。 当我运行docker-compose -f dev.yml build我以下错误> Building postgres ERROR: Couldn't connect to Docker daemon – you might need to run `docker-machine start default`. 但是,如果我运行docker-machine ls机显然是> NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default – virtualbox Running tcp://192.168.99.100:2376 v1.12.1 我通过运行eval "$(docker-machine env default)"修复了这个错误。在这之后, docker-compose -f dev.yml build成功完成。 我的问题为什么这个工作,实际发生了什么,我该如何解决? 也是这是一个安全的方法来解决这个问题? 现在,这只是我的笔记本电脑,但这些容器应该在不久的将来打到公司的服务器。 我不是超级stream利的bash,但我总是被告知不要运行eval ,特别是不要运行eval与“

如何configuration`ng serve`来捕获dockersized Angular 2应用程序中的更改?

我是'dockersizing'(我希望这是一个正确的术语)现有的Angular 2应用程序,运行在angular-cli (1.0.0-beta.31)上。 我正在努力find一种方法来使ng serve捕捉,每当我更新我的工作目录中的文件,因此 – 刷新我的应用程序(像往常一样)。 否则,我需要每次更改文件时都需要docker-compose up –build … 编辑 :我正在探索的想法是添加一个卷。 这是我的Dockerfile : # Dockerizing Angular 2 Client App # @link: https://scotch.io/tutorials/create-a-mean-app-with-angular-2-and-docker-compose # Create image based on the official Node 7 image from dockerhub FROM node:7 # Create a directory where our app will be placed RUN mkdir -p /usr/src/app # Change directory […]

Pip安装-e软件包不会出现在Docker中

我有一个requirements.txt文件,其中包含: Flask-RQ==0.2 -e git+https://token:x-oauth-basic@github.com/user/repo.git#egg=repo 当我尝试使用Docker Compose构build一个Docker容器时,它会下载这两个包并将其安装,但是当我做一个pip freeze ,没有-e包的标志。 当我尝试运行应用程序,看起来好像这个软件包还没有安装。 以下是构build的相关输出: Collecting Flask-RQ==0.2 (from -r requirements.txt (line 3)) Downloading Flask-RQ-0.2.tar.gz Obtaining repo from git+https://token:x-oauth-basic@github.com/user/repo.git#egg=repo (from -r requirements.txt (line 4)) Cloning https://token:x-oauth-basic@github.com/user/repo.git to ./src/repo 这里是我的Dockerfile : FROM python:2.7 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY requirements.txt /usr/src/app/ RUN pip install -r requirements.txt COPY . /usr/src/app 我觉得这种情况很奇怪,并希望得到任何帮助。

Docker-Compose文件有yaml.scanner.ScannerError

compose.yml文件,如下所示: version: '2' services: discovery-microservice: build: discovery-microservice context: /discovery-microservice/target/docker dockerfile: Dockerfile ports: – "8761:8761" 当我执行它时,我得到以下错误: yaml.scanner.ScannerError: mapping values are not allowed here in "C:\…\docker-compose.yml", line 5, column 14 从我所看到的格式来看,没有什么错,例如空格不见了。 我的总体目标是指定一个开发模式docker-compose文件,将它指向来自不同模块的目标目录。 我在这里做错了什么?

如何在使用docker-compose扩展服务时在卷path中指定迭代器?

背景:我使用docker-compose为了将一个tomcat服务放入一个docker swarm集群,但是我现在正在努力处理日志目录,因为我想扩展这个服务,但是保留了这个服务的唯一性日志目录。 考虑(显然)编写的docker-compose,它只是启动tomcat并挂载一个日志文件系统来捕获日志。 version: '2' services: tomcat: image: "tomcat:latest" hostname: tomcat-example command: /start.sh volumes: – "/data/container/tomcat/logs:/opt/tomcat/logs,z" 版本 docker1.11 docker工人1.7.1 API版本1.21 问题:我正在考虑如何将variables插入“卷”日志path,以便日志目录对于缩放服务的每个实例都是唯一的 说, volumes: – "/data/container/tomcat/${container_name}/logs:/opt/tomcat/logs,z" 我看到基于项目名称(或目录我在)的容器名称是真正知道的,所以我可以使用这个? 例如,将项目名称设置为“tomcat”并运行docker-compose scale tomcat=2我会看到以下容器。 主机名 / tomcat_1 主机名 / tomcat_2 那么有没有什么办法可以利用这个作为日志卷中的variables,欢迎其他的build议或方法。 我意识到,我可以只指定一个相对path,并让container_id照顾这个,但现在如果我将splunk或logstash连接到日志logging设备,我需要知道哪些是确实日志logging设备,而不是基础容器f /秒。 然而,理想情况下,我正在寻找一个特定的绝对path。 先谢谢了dockers! R.

/var/run/docker.sock:在Python CGI脚本中运行docker时拒绝了权限

我正在尝试运行Python CGI脚本,我需要运行泊坞窗图像。 我正在使用Docker版本1.6.2。 用户是“www-data”,在Docker组中添加。 www-data : www-data sudo docker 在机器上,与www数据我能够执行docker命令 www-data@mytest:~/html/new$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 从Python CGI脚本运行docker映像时出现以下错误: fatal msg="Get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?" 有什么我在这里失踪?