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
问题详情
我已经将 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/,与将指定的主机目录挂载到容器有关,但我已经将必要的文件添加到了工作目录中。我只想安装依赖项。
感谢您的帮助。
docker run -i -t platform_wordpress /bin/bash
命令来查看容器中的工作目录文件时,我注意到插件文件在这里不存在,但存在于我的主机(vagrant)目录中。我在 Docker 文档中找不到答案。你有关于 Docker Compose 和 Docker 基础知识的深入解释的链接吗?再次感谢。 :-D - Hunter Lesterrestart
选项在文档中有说明,网址为https://docs.docker.com/compose/compose-file/#cpu-shares-cpuset-domainname-entrypoint-hostname-ipc-mac-address-mem-limit-memswap-limit-privileged-read-only-restart-stdin-open-tty-user-working-dir。它是Docker运行命令的一部分:https://docs.docker.com/engine/reference/run/#restart-policies-restart。我认为Docker Compose选项“yes”和“no”分别对应于“always”和“never”。 - Andy Shinn