我想从dockerfile构建drupal并使用容器目录中的dockerfile在/ dr / www / html / sites / all / modules中在drupal中安装模块。 但是当我通过docker-compose build构建dockerfile时,它正确地提取.. 一旦我执行docker-compose,文件就会消失,但是会映射卷。 请查看docker-compose和dockerfile
FROM drupal:7
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
ENV DRUPAL_VERSION 7.36
ENV DRUPAL_MD5 98e1f62c11a5dc5f9481935eefc814c5
ADD . /var/www/html/sites/all/modules
WORKDIR /var/www/html
RUN chown -R www-data:www-data sites
WORKDIR /var/www/html/sites/all/modules
# Install drupal-chat
ADD "http://ftp.drupal.org/files/projects/{drupal-module}.gz {drupal-module}.tar.gz"
RUN tar xzvf {drupal-module} \
&& rm {drupal-module} \
# PHP Web Server
version: '2'
drupal_box:
build: .
ports:
- "3500:80"
external_links:
- docker_mysqldb_1
volumes:
- ~/Desktop/mydockerbuild/drupal/modules:/var/www/html/sites/all/modules
- ~/Desktop/mydockerbuild:/var/log/apache2
networks:
- default
- docker_default
environment:
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_DATABASE: drupal
restart: always
#entrypoint: ./Dockerfile
networks:
docker_default:
external: true
执行
sudo docker-compose build
sudo docker-compose up
执行上述两项命令时─ 容器中的目录没有{drupal-module文件夹},但我看到它在控制台的目录中成功解压缩(由于dockerfile中的tar命令中的xzvf)。 但是这有助于我映射主机目录和容器目录,并且可以在虚拟和本地看到添加或删除的文件。
但是只要删除卷中的第一个映射(即〜/ Desktop ...),模块就会在目录中解压缩,但映射不会完成。
我的主要目的是提取/ var / www / html / sites / all / modules中的{drupal-module}文件夹,并将同一文件夹映射到主机目录。
请帮忙!
答案 0 :(得分:0)
是的。
答案是,您无法将容器文件夹的解压缩内容放入docker-compose中的卷映射中指定的主机文件夹中。即(./modules:/var/www/html/sites/all/modules)对于drupal docker是不可接受的。
我使用命名卷来实现这一目标。 例如 - 模块:/ var / www / html / sites / all / modules 这将在var / lib / docker / volumes中创建一个卷...(您可以通过" docker inspect"来获取地址),并且该卷将具有与容器中提取的数据相同的数据。
注意 - 不同之处在于./ !!!