(Docker)как установить зависимости, используя отдельный контейнер Composer, в контейнере WordPress?



Dockerfile



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 Compose File



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 в рабочий каталог. Я могу подтвердить, что эти два файла находятся в рабочем каталоге.



Мне нужно, чтобы Dockerfile (или где-то еще) также автоматически устанавливал зависимости в рабочий каталог.



Согласно Docker Hub, https://hub.docker.com/r/composer/composer/,
Я должен быть в состоянии docker run -v $(pwd):/app composer/composer install чтобы установить зависимости, но как это сделать в Dockerfile?



Также я запутался, потому что флаг -v, https://docs.docker.com/engine/userguide/dockervolumes/, имеет отношение к монтированию указанного каталога хоста в контейнер a, но я уже ADDдобавил необходимые файлы в рабочий каталог. Все, что я хочу сделать, это установить зависимости.



Спасибо за вашу помощь.
690   1  

1 ответ:

Вам просто нужно подключить текущий каталог к /app при запуске вашего контейнера composer. Я собрал простой пример, чтобы проиллюстрировать эту работу в https://gist.github.com/andyshinn/e2c428f2cd234b718239 .

Ключевыми частями здесь являются volumes для composer части приложения и restart: 'yes' для основного приложения PHP (приложение, скорее всего, не будет работать, пока Composer не запустится, поэтому вы захотите его перезапустить).

Comments

    Ничего не найдено.