注意:我不再使用这个环境,所以我没有办法测试答案并接受答案。对不起.
您能给我指出一个使用composer处理PHP依赖关系的docker映像的例子吗?
我正在使用docker php映像构建一个docker映像,我需要做的是安装composer并在映像创建时或映像构建时运行一个composer更新命令(不知道两者是否都可以)。
我可以通过手动执行所有步骤(运行一个docker映像,敲击它,复制和粘贴每一个步骤)来运行一切。
但是当我在Dockerfile上执行所有这些步骤时,我无法让composer编写文件。
我一直试图得到一个最小失败的例子一段时间,但我得到的一个是相当不是最小。
我的测试由以下内容组成(以下链接到相关的github repos)
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 \
&& apt-get install -y \
libpng12-dev \
libjpeg-dev \
curl \
sed \
zlib1g-dev \
&& docker-php-ext-install \
zip \
mysqli
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
#~~~ DIRS ~~~#
WORKDIR /var/www/html/
#~~~ WORDPRESS ~~~#
COPY files/composer.json composer.json
ONBUILD RUN composer update
wordpress:
image: miqueladell/composed_wordpress_test
links:
- wordpress_db:mysql
environment:
- VIRTUAL_HOST=miqueladell.dev
- WORDPRESS_DB_NAME=wordpress
ports:
- "80"
wordpress_db:
image: miqueladell/mariadb-utf8mb4
environment:
- MYSQL_ROOT_PASSWORD=password
我的测试如下
>
在包含上面粘贴的Dockerfile的目录中生成执行此命令的映像
docker build -t miqueladell/composed_wordpress_test .
(日志中没有错误)
docker-compose up
敲击正在运行的容器以查看文件是否在那里
docker exec -i -t miqueladellv2_wordpress_1 bash
/var/www/html的ls
root@bff14367658b:/var/www/html# ls -al
total 12
drwxr-xr-x 2 www-data www-data 4096 Jan 19 10:50 .
drwxr-xr-x 5 root root 4096 Jan 19 10:50 ..
-rw-r--r-- 1 root root 138 Jan 15 09:18 composer.json
您可以在步骤4中看到composer update似乎根本没有运行。
RUN composer update
而且
ONBUILD RUN composer update
在Dockerfile中使用相同的结果。
如果回到测试的前一步第4步,并且在docker容器的bash提示符上手动运行composer update,我将得到:
root@bff14367658b:/var/www/html# composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing johnpbloch/wordpress-core-installer (0.2.1)
Downloading: 100%
- Installing johnpbloch/wordpress (4.4.1)
Downloading: 100%
Writing lock file
Generating autoload files
root@bff14367658b:/var/www/html# ls -al
total 24
drwxr-xr-x 4 www-data www-data 4096 Jan 19 11:12 .
drwxr-xr-x 6 root root 4096 Jan 19 11:12 ..
-rw-r--r-- 1 root root 138 Jan 15 09:18 composer.json
-rw-r--r-- 1 root root 3718 Jan 19 11:12 composer.lock
drwxr-xr-x 4 root root 4096 Jan 19 11:12 vendor
drwxr-xr-x 5 root root 4096 Jan 19 11:12 wordpress
root@bff14367658b:/var/www/html#
这样安装composer可以避免这个问题:
RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
&& curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
# Make sure we're installing what we think we're installing!
&& php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --snapshot \
&& rm -f /tmp/composer-setup.*
cp/var/ww/html/config.inc.php.dist/var/ww/html/config.inc.php 未安装。 DockerFile:
目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个
我有以下文件夹结构: 这里,我的是: 当我运行时,我希望有两个输出图像,一个用于,一个用于。 我使用(仅与版本2的语法兼容)。
我试图从docker容器中安装curl,但由于以下错误而失败,我尝试设置代理-No go 尝试的步骤: > 使用Dockerfile构建docker 使用构建参数HTTP_PROXY构建 Docker 构建 docker登录到repo,然后尝试构建镜像-no go 使用 env 代理更新 config.json 文件 - 不行 使用不同的代理 试图刷新windows pc上的DNS docker构
我在bitbucket管道构建过程中收到了这个错误。我想念火药罐。 生成失败错误: 有关环境的详细信息: > 使用Gradle的Android Studio项目 Bitbucket(云)管道CI 在我的Docker容器中为我的构建安装Firebase和其他未来的依赖项,这样管道就可以构建我的Android项目 到目前为止我所拥有的: 该应用程序在本地构建良好。您需要在Android Studio中
问题内容: 我正在进入Node.js代码库,该代码库要求我通过NPM(即jQuery)下载一些依赖项。 在尝试运行时,我不断出现此错误: 看来失败是由于缺少Python安装造成的。好了,我已经安装了Python,设置了变量,然后重新启动,仍然是错误。 关于我所缺少的任何线索吗? 问题答案: 您的问题是您 没有 设置环境变量。 该错误清楚地表明: 在评论中,您说您这样做: 很好,但是没有设置变量,而