Udit Agrawal
Udit Agrawal

Reputation: 69

docker-compose file removes the files extracted by dockerfile in container directory

I want to build drupal from dockerfile and install a module in drupal using that dockerfile in container directory - /var/www/html/sites/all/modules. but when I build the dockerfile by docker-compose build it extracts correctly .. as soon as I perform docker-compose up , the files are gone but the volume is mapped . please look the both the docker-compose and dockerfile

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} \

docker-compose file

# 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

executing:

sudo docker-compose build
sudo docker-compose up

on executing both of the commands above- the directory in the container doesnot have the {drupal-module folder} but i see it is successfully extracting in the directory in console(due to xzvf in tar command in dockerfile). but this helps me in mapping both the host directory and the container directory and files added or deleted can be seen both virtually and locally.

but as soon as I remove the first mapping in volume (i.e ~/Desktop...) the module is extracted in the directory but the mapping is not done.

My main aim is to extract the {drupal-module} folder in /var/www/html/sites/all/modules and map the same folder to the host directory.

Please Help !

Upvotes: 1

Views: 901

Answers (1)

Udit Agrawal
Udit Agrawal

Reputation: 69

So yes.

The answer is that you cannot have the extracted contents of the container folder into your host folder specified in the volumes mapping in docker-compose. i.e (./modules:/var/www/html/sites/all/modules) is not acceptable for drupal docker.

I did it with named volumes where you can achieve this. Eg - modules:/var/www/html/sites/all/modules this will create a volume in var/lib/docker/volumes... (you can have the address by "docker inspect ") and the volume will have the same data as extracted in your container.

Note- the difference lies in ./ !!!

Upvotes: 1

Related Questions