• <small id='rQpsZ'></small><noframes id='rQpsZ'>

    <tfoot id='rQpsZ'></tfoot>

    1. <i id='rQpsZ'><tr id='rQpsZ'><dt id='rQpsZ'><q id='rQpsZ'><span id='rQpsZ'><b id='rQpsZ'><form id='rQpsZ'><ins id='rQpsZ'></ins><ul id='rQpsZ'></ul><sub id='rQpsZ'></sub></form><legend id='rQpsZ'></legend><bdo id='rQpsZ'><pre id='rQpsZ'><center id='rQpsZ'></center></pre></bdo></b><th id='rQpsZ'></th></span></q></dt></tr></i><div id='rQpsZ'><tfoot id='rQpsZ'></tfoot><dl id='rQpsZ'><fieldset id='rQpsZ'></fieldset></dl></div>

        <bdo id='rQpsZ'></bdo><ul id='rQpsZ'></ul>
      <legend id='rQpsZ'><style id='rQpsZ'><dir id='rQpsZ'><q id='rQpsZ'></q></dir></style></legend>

        获取 Composer(php 依赖管理器)以在 docker 镜像构建上

        时间:2023-10-04
      1. <legend id='wTbBH'><style id='wTbBH'><dir id='wTbBH'><q id='wTbBH'></q></dir></style></legend>
              <tbody id='wTbBH'></tbody>

            • <tfoot id='wTbBH'></tfoot>
            • <small id='wTbBH'></small><noframes id='wTbBH'>

              <i id='wTbBH'><tr id='wTbBH'><dt id='wTbBH'><q id='wTbBH'><span id='wTbBH'><b id='wTbBH'><form id='wTbBH'><ins id='wTbBH'></ins><ul id='wTbBH'></ul><sub id='wTbBH'></sub></form><legend id='wTbBH'></legend><bdo id='wTbBH'><pre id='wTbBH'><center id='wTbBH'></center></pre></bdo></b><th id='wTbBH'></th></span></q></dt></tr></i><div id='wTbBH'><tfoot id='wTbBH'></tfoot><dl id='wTbBH'><fieldset id='wTbBH'></fieldset></dl></div>
              • <bdo id='wTbBH'></bdo><ul id='wTbBH'></ul>
                  本文介绍了获取 Composer(php 依赖管理器)以在 docker 镜像构建上运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  TL;DR 你能给我指出一个使用 composer 处理 PHP 依赖项的 docker 镜像示例吗?

                  TL;DR Can you point me to an example of a docker image that uses composer to handle PHP dependencies?

                  我在这篇文章中的所有问题都是关于 composer php 依赖工具 不是 docker-composer fig 的继任者em>.

                  All my questions in this post are regarding composer the php dependency tool not docker-composer the successor of fig.

                  我正在尝试构建我自己的 docker 镜像来运行 WordPress 作为 Composer 依赖项安装.

                  I'm trying to build my own docker image to run WordPress installed as a composer dependency.

                  我正在使用 docker PHP 镜像作为基础构建 docker 镜像,我需要做的是安装 composer 并在镜像创建时或镜像构建时运行 composer update 命令(不知道是否两个都可以).

                  I'm working on building a docker image using docker PHP image as a base and what I need to do is install composer and run a composer update command either on image creation time or on image build time (don't know if both would be ok).

                  我可以通过手动执行所有步骤(运行 docker 镜像,猛击它,然后复制和粘贴每一步)来运行一切正常.

                  I can run everything just fine by manually executing all the steps (running a docker image, bashing into it, and copying and pasting every step).

                  但是当我将所有这些步骤放在 Dockerfile 上时,我没有让 Composer 来编写文件.

                  But when I put all that steps on a Dockerfile I don't get composer to write the files.

                  一段时间以来,我一直在尝试获得最少失败的示例,但我得到的示例并不是最少的.

                  I've been trying to get a minimum failing example for some time but the one I've got is quite not minimum.

                  我的测试由以下内容组成(链接到下面的相关 github 存储库)

                  My test is composed of the following (links to the relevant github repos below)

                  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 
                      && 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
                  

                  docker-compose.yml

                  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
                  

                  我的测试如下

                  1. 在包含上面粘贴的 Dockerfile 的目录中构建执行此命令的映像

                  1. Build an image executing this command in a directory containing the Dockerfile pasted above

                   docker build -t miqueladell/composed_wordpress_test .
                  

                  (日志中没有错误)

                  通过在包含上面粘贴的 docker-compose.yml 的目录中运行以下命令,使用该图像构建容器

                  Use that image to build a container by running the following command in a directory containing the docker-compose.yml pasted above

                   docker-compose up
                  

                  (日志中没有错误)

                  bash 进入正在运行的容器以查看文件是否存在

                  bash into the running container to be able to see if the files are there

                   docker exec -i -t miqueladellv2_wordpress_1 bash
                  

                • ls of/var/www/html

                • ls of /var/www/html

                   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 似乎根本没有运行.

                  You can see in step 4 that composer update seems to not have run at all.

                  我都试过

                  RUN composer update
                  

                  ONBUILD RUN composer update
                  

                  在 Dockerfile 上具有相同的结果.

                  on Dockerfile with the same results.

                  如果我回到测试的前一个步骤 4 并在 docker 容器的 bash 提示符下手动运行 composer update 我得到:

                  If I go back to the previous step 4 of the test and I manually run composer update on the bash prompt of the docker container I get:

                  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#
                  

                  这正是我在第 4 步中期望的输出

                  which is exactly the output I was expecting on step 4

                  完整文件的github链接

                  • Dockerfile 及其依赖项
                  • docker-composer

                  推荐答案

                  像这样安装 composer 可以避免这个问题:

                  Installing composer like this will avoid this problem:

                  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.*
                  

                  这篇关于获取 Composer(php 依赖管理器)以在 docker 镜像构建上运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何通过 docker-php-ext-install 安装 php 扩展? 下一篇:Docker Swarm 在 Nginx 中获取真实 IP(客户端主机)

                  相关文章

                  最新文章

                • <i id='h85D5'><tr id='h85D5'><dt id='h85D5'><q id='h85D5'><span id='h85D5'><b id='h85D5'><form id='h85D5'><ins id='h85D5'></ins><ul id='h85D5'></ul><sub id='h85D5'></sub></form><legend id='h85D5'></legend><bdo id='h85D5'><pre id='h85D5'><center id='h85D5'></center></pre></bdo></b><th id='h85D5'></th></span></q></dt></tr></i><div id='h85D5'><tfoot id='h85D5'></tfoot><dl id='h85D5'><fieldset id='h85D5'></fieldset></dl></div>

                        <bdo id='h85D5'></bdo><ul id='h85D5'></ul>

                      <small id='h85D5'></small><noframes id='h85D5'>

                    1. <legend id='h85D5'><style id='h85D5'><dir id='h85D5'><q id='h85D5'></q></dir></style></legend>

                      <tfoot id='h85D5'></tfoot>