Tag: composer php

如何cachingdocker构build的包pipe理器下载?

如果我从我的主机运行composer install ,我打我的本地composer phpcaching: – Installing deft/iso3166-utility (1.0.0) Loading from cache 然而,当在Dockerfile中构build一个容器时: RUN composer install -n -o –no-dev 我下载了所有的东西,例如: – Installing deft/iso3166-utility (1.0.0) Downloading: 100% 这是预期的,但我喜欢避免它。 即使重build,它也会下载一切。 我想有一个composer php的通用caching,我也可以转发其他docker项目。 我看着这个,find了在Dockerfile中定义一个卷的方法 : ENV COMPOSER_HOME=/var/composer VOLUME /var/composer 我将其添加到我的Dockerfile ,预计只下载一次这些文件,然后点击caching。 然而,当我修改我的composer ,例如删除-o标志,并重新运行docker build . ,我预计会打上caching,但我仍然下载供应商。 卷应该如何在Docker容器中有一个数据caching?

composer php没有看到GD扩展

我已经在Docker机器上安装了GD,如https://hub.docker.com/_/php/所述: RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng12-dev \ && docker-php-ext-install -j$(nproc) iconv mcrypt \ && docker-php-ext-configure gd –with-freetype-dir=/usr/include/ –with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd 适用于PHP 7和PHP 5.6。 它工作没有问题(我可以操纵图像),但我现在想安装一些需要"ext-gd": "*",composer php包,问题是这样的: php -m 显示gd加载但是 composer show -p 不显示ext-gd所以我不能安装我需要使用composer php的软件包。 有什么办法可以安装GD让Composer看到它? 我在这里发现了类似的问题: https : //github.com/composer/composer/issues/4353,但是没有解决就closures了。 另外composer php依赖,说明没有php-xsl没有解决。 作为参考,我已经validation了Homestead,那里的composer […]

如何禁用CircleCI中默认的作曲者安装?

CircleCI中有一个产品,它有一个composer.json 。 默认情况下,当该文件存在时,CircleCI将运行一个composer install 。 但是,我不想要这个,因为我正在产生一个docker容器,在那里我将运行我所有的composer php的东西。 所以我的问题基本上是: 我怎样才能禁用CircleCI的默认行为,并使其“忽略”我的composer.json文件?

在Docker容器中使用git,composer,oh-my-zsh(UID / GID问题)

我目前正在Docker上开发一个定制开发环境。 我曾经build立一个重新组合Git,Composer,Symfony,Java的“工具”。主要目标是不要在主机上安装thoses软件包(我可以快速地从容器主机切换到主机) 我使用的工具容器是基于debian的:jessie; 使用“哦,我的ZSH”,主要是这部分的Git和composer php。 我的git存储库是从主机挂载的。 这里有两个相关的问题: 问题1 由于运行Docker显然是在root 0:0,我有我的本地用户主机(默认1000:1000)和运行Git或Composer的容器的UID / GID问题。 容器运行它作为根(0:0)和大部分时间破坏本地主机权限。 我已经尝试了与Gosu( https://github.com/tianon/gosu )的一些解决方法和/或玩关于创build用户(RUN useradd,USER用户….)envvars和Dockerfile参数。 仍然在这一部分失败。 问题2 与oh-my-zsh同样的问题。 考虑到它正在使用根,如果我更改用户,我得到一个容器内的权限被拒绝。 让我们考虑一下这个Dockerfile作为我目前用来构build容器的Dockerfile: FROM debian:jessie RUN apt-get update -qq && apt-get install -y bc zsh curl wget git tig gettext-base vim nano # Install Oh My Zsh RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O – | zsh || true […]

composer php不能在容器泊坞内分配内存

我目前使用docker来运行我的Symfony3 。 但是,当我尝试在我的容器中运行composer php更新 (在执行命令docker exec -it name of the bash container之后)时出现此错误。 [ErrorException] Proc_open (): fork failed – Can not allocate memory composer php文档要求configuration机器的交换,但是我按照文档的步骤得到这个错误 / bin / dd if = / dev / zero = / var / swap.1 bs = 1M count = 1024(OK) / sbin / mkswap /var/swap.1(确定) / sbin / swapon /var/swap.1(KO) […]

Docker项目pipe理子项目通过符号链接

情况 我有项目A和项目B,A依靠composer phpB. B在A中实现接口的function B中有正确执行的unit testing。 现在,我想通过API来testing这一点 – 为此,我午餐项目A并通过HTTP APItesting所有function。 鉴于项目A,有自己docker-compose.yml与其他开发人员共享,我不能更改此configuration。 更宽的环境 在项目A中,我有更多的项目B.另外,我也有更多的项目A,它们大多与项目A具有相似的共享依赖项。 问题 为了不运行testing,更新B上的bug,标签和在A上运行作曲者更新有一个简单的解决scheme – 在供应商内部,我创build了符号链接来replace已安装的项目B. docker工的问题是,在安装量上,docker工人看不到符号链接(我的库)的内容。 我有 Docker for Mac – 边缘 链接 类似的问题,但build立形象 标准符号链接,没有帮助。 思路 复制项目 我想,关于将项目B复制到给定的项目A供应商,但考虑到更广泛的背景下,这是未来的解决scheme。 题 有没有可能这个设置工作,没有复制项目? 如果不是,那么: 如何pipe理特定架构中的子项目或符号链接,以积极开发项目的所有项目? 你有一些工作或其他设置的build议吗?

docker和PHP:获取依赖关系(composer php)的容器

一个小背景:我是docker工人,不知道任何最佳做法。 我的任务是创build一个基于PHP的web服务,我决定使用docker-compose进行configuration。 因为我们都是花哨的开发者,我们知道 – 现在没有办法在没有使用作曲者的情况下创build一个php应用程序。 我的问题: 我应该在构build中安装依赖关系吗? 所以通过添加到我的Dockerfile中: RUN cd /app && composer install –no-interaction –prefer-source –optimize-autoloader 或者我应该在开发过程中安装依赖关系,并使用包含的依赖关系构build容器映像? 我只知道一种方法不这样做:在开发机器上本地安装依赖关系,然后构build容器。 但是,“最佳实践”将如何呢? 而且 – 因为我是这个领域的新手,我将如何为我的应用程序服务容器运行“composer require some / package”? 顺便一提 我还注意到一条消息:“不要以root /超级用户的身份运行Composer!” build造集装箱时。 我添加COMPOSER_ALLOW_SUPERUSER=1到我的环境文件(如图所示),但是这个消息仍然出现。 有没有可能不执行作为根在docker集装箱的composer php安装? 我可以忽略这个消息吗? 在此先感谢,菲利普

Docker和包pipe理器在生产中

我正在开发一个PHP应用程序,我想使用docker集装箱运行。 我正在使用composer包pipe理器来引入所有的依赖关系。 所有的代码保存在一个git仓库,除了依赖。 为了使我的本地机器上运行的一切,我使用docker-compose(图)。 我将我的应用程序代码(包括供应商文件夹)装载到我的容器上。 这是我的docker-compose.yml文件。 nginx: image: nginx:1.9 links: – php volumes: – conf/nginx/default.conf:/etc/nginx/conf.d/default.conf – src:/var/www/html ports: – "80:80" php: image: php:5.6.9-fpm links: – memcached volumes: – conf/php/php.ini /usr/local/etc/php/php.ini – src:/var/www/html volumes_from: – nginx 我不明白的是我如何将其推入生产或分期环境。 根据我的理解,最好将容器中的所有东西都放在容器中,而不必运行包pipe理器,因为这可能会失败,或者包可能与本地机器上的包不一样。 所以我想出了以下docker-compose.yml文件: webapp: image : quay.io/myusername/myrepo php: image: php:5.6.9-fpm volumes: – config/php/php.ini /usr/local/etc/php/php.ini volumes_from: – webapp nginx: image: nginx:1.9 […]

在特定进程的开发环境中将docker作为非root用户运行

我正在继续学习Docker以及如何处理图像和容器。 我正在研究在工作中使用的图像。 这是Dockerfile : FROM ubuntu:trusty … RUN curl -sS https://getcomposer.org/installer | php — –install-dir=/usr/local/bin –filename=composer && \ chown www-data /usr/local/bin/composer && composer –version RUN composer global require sebastian/phpcpd && \ composer global require phpmd/phpmd && \ composer global require squizlabs/php_codesniffer … 它的作品,但每次我build立一个图像,我看到关于composer php作为root用户运行恼人的消息,这是不坏的,但我想改变这种行为只是为了好玩:)并学习。 我想创build并保留(用于另一种用法,也可能用于其他任务)用户docker-dev运行此任务。 这个用户应该有一个home目录, composer应该安装全局库,但在这个用户主目录下。 现在composer被安装在/root/.composer下,每个库都安装在那里,我想把它变成/home/docker-dev/.composer ,然后安装在那里的库。 我已经阅读了很多关于这个话题的文档: http://www.projectatomic.io/docs/docker-image-author-guidance/ https://github.com/airdock-io/docker-base/wiki/How-Managing-user-in-docker-container http://blog.dscpl.com.au/2015/12/overriding-user-docker-containers-run-as.html 在Docker中以非root用户身份运行应用程序 http://www.yegor256.com/2014/08/29/docker-non-root.html […]

docker工和composer php安装

我遇到了docker-compose的问题,使用composer安装php-fpm容器。 我有像文件夹结构: docker-compose.yml containers/ nginx Dockerfile php-fpm Dockerfile 泊坞窗,compose.yml: version: '3' services: nginx: build: context: ./containers/nginx ports: – 80:80 php-fpm: build: context: ./containers/php-fpm tty: true 并在php-fpm / Dockerfile中: FROM php:7.1.5-fpm-alpine RUN curl -sS https://getcomposer.org/installer | php — –install-dir=/usr/local/bin –filename=composer WORKDIR /srv/www ENTRYPOINT composer install –prefer-source –no-interaction –no-autoloader 使用当前的ENTRYPOINT,似乎composer php安装被困在“生成自动载入文件”,因为之后没有任何输出和容器不出现在dockerps列表中。 我怎么能保持上面的文件夹结构,但仍然能够运行composer php安装后生成或运行(在这种情况下,我将需要添加条件)?