(Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项? [英] (Docker) How to install dependencies, using separate Composer container, in WordPress container?

查看:69
本文介绍了(Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

FROM wordpress

ENV REFRESHED_AT 2015-08-12

ADD \
  composer.json /var/www/html
ADD \
  composer.lock /var/www/html

# install the PHP extensions
RUN \
  apt-get -qq update && \
  apt-get -y upgrade && \
  apt-get install -y vim wget && \
  rm -rf /var/lib/apt/lists/*

# Symlink User's "wp-content" folder into the newly installed Wordpress
RUN \
  rm -rf /usr/src/wordpress/wp-content/plugins/* && \
  rm -rf /usr/src/wordpress/wp-content/themes/* && \
  cp -fr /usr/src/wordpress/* /var/www/html/ && \
  chown -R www-data:www-data /var/www/html/

# volume for mysql database and wordpress install
VOLUME ["/var/www/html/wp-content/plugins", "/var/www/html/wp-content/themes"]

# Define working directory.
WORKDIR /var/www/html/

EXPOSE 80 3306

CMD ["apache2-foreground"]

Docker撰写文件

wordpress:
  build: .
  links:
    - mysql
    - composer
  volumes:
    - wp-content/plugins/:/var/www/html/wp-content/plugins
    - wp-content/themes/:/var/www/html/wp-content/themes
  environment:
    - WORDPRESS_DB_PASSWORD=__WORDPRESS_DB_PASSWORD__
    - WORDPRESS_DB_NAME=__WORDPRESS_DB_NAME__
    # - WORDPRESS_DB_USER=__WORDPRESS_DB_USER__

  ports:
    - "9888:80"

mysql:
  image: mysql:5.7
  environment:
    - MYSQL_ROOT_PASSWORD=__WORDPRESS_DB_PASSWORD__
    - MYSQL_DATABASE=__WORDPRESS_DB_NAME__

composer:
  image: composer/composer

问题详细信息

我能够 ADD composer.json composer.lock 文件到工作目录.我可以确认这两个文件在工作目录中.

Question details

I'm able to ADD the composer.json and composer.lock files to the working directory. I can confirm that these two files are in the working directory.

我需要的是Dockerfile(或其他位置)也将依赖项自动安装到工作目录中.

What I need is for the Dockerfile (or wherever) to also automatically install the dependencies into the working directory.

根据Docker Hub, https://hub.docker.com/r/composer/作曲家/,我应该能够 docker run -v $ {pwd):/app composer/composer install 来安装依赖项,但是我该如何在Dockerfile中做到这一点呢?

According to Docker Hub, https://hub.docker.com/r/composer/composer/, I should be able to docker run -v $(pwd):/app composer/composer install to install the dependencies but how do I do this in Dockerfile?

我也很困惑,因为 -v 标志 https://docs.docker.com/engine/userguide/dockervolumes/与将指定的主机目录装入容器有关,但是我已经 ADD 了必要的文件到工作目录.我要做的就是安装依赖项.

Also I'm confused because the -v flag, https://docs.docker.com/engine/userguide/dockervolumes/, has to do with mounting the specified host directory into the a container but I've already ADDed the necessary files to the working directory. All I want to do is install the dependencies.

谢谢您的帮助.

推荐答案

运行 composer 容器时,只需要将当前目录挂载到/app .我在 https://gist.github.com/andyshinn/处放了一个简单的示例来说明此工作e2c428f2cd234b718239 .

You just need to mount the current directory to /app when running your composer container. I've put together a simple example to illustrate this working at https://gist.github.com/andyshinn/e2c428f2cd234b718239.

这里的关键部分是应用程序 composer 部分的 volumes 和主要PHP应用程序上的 restart:'yes'(在Composer运行之前,该应用程序可能无法运行,因此您希望它重新启动.)

The key parts here are the volumes for the composer part of the application and the restart: 'yes' on the primary PHP application (the application likely will not run until Composer has run so you will want it to restart).

这篇关于(Docker)如何在WordPress容器中使用单独的Composer容器安装依赖项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆