Image Building With Compose
- "Building custom
drupalimage for local testing"
- Compose isn't just for developers. Testing apps is easy/fun!
- Maybe you're learning Drupal admin, or are a software tester
- Start with Compose file from previous assignment
- Make your
~> ls docker-compose.yml Dockerfile
version: '2' services: drupal: image: custom-drupal # If we remove this line, it creates random name build: . # Build in this directory and use Dockerfile ports: - "8080:80" volumes: - drupal-modules:/var/www/html/modules - drupal-profiles:/var/www/html/profiles - drupal-sites:/var/www/html/sites - drupal-themes:/var/www/html/themes postgres: image: postgres environment: - POSTGRES_PASSWORD=mypassword volumes: - drupal-data:/var/lib/postgresql/data volumes: drupal-data: drupal-modules: drupal-profiles: drupal-sites: drupal-themes:
FROM drupal:8.2 RUN apt-get update \ && apt-get install -y git \ && rm -rf /var/lib/apt/lists/* WORKDIR /var/www/html/themes RUN git clone --branch 8.x-3.x --single-branch --depth 1 https://git.drupal.org/project/bootstrap.git \ && chown -R www-data:www-data bootstrap WORKDIR /var/www/html
~> docker-compose up Creating network "composeassignment2_default" with the default driver Creating volume "composeassignment2_drupal-modules" with default driver Creating volume "composeassignment2_drupal-sites" with default driver Creating volume "composeassignment2_drupal-profiles" with default driver Creating volume "composeassignment2_drupal-data" with default driver Creating volume "composeassignment2_drupal-themes" with default driver Building drupal ...
- After it started I went to
localhost:8080and installed Drupal the same as in previous assignment
- Switched to Appearance and installed the theme I've copied in my build.
- Everything worked, check screenshots below
- Tested if changes are persistent
... C^ Gracefully stopping... (press Ctrl+C again to force) Stopping composeassignment2_postgres_1 ... done Stopping composeassignment2_drupal_1 ... done ~> docker-compose down Removing composeassignment2_postgres_1 ... done Removing composeassignment2_drupal_1 ... done Removing network composeassignment2_default ~> docker-compose up Creating network "composeassignment2_default" with the default driver Creating composeassignment2_postgres_1 ... Creating composeassignment2_drupal_1 ... Creating composeassignment2_drupal_1 Creating composeassignment2_drupal_1 ... done Attaching to composeassignment2_postgres_1, composeassignment2_drupal_1
- Checked that the changes were persistent
- And cleaned up after I finished with assignments (including volumes and images)
~> docker-compose down -v --rmi local Removing composeassignment2_drupal_1 ... done Removing composeassignment2_postgres_1 ... done Removing network composeassignment2_default Removing volume composeassignment2_drupal-modules Removing volume composeassignment2_drupal-sites Removing volume composeassignment2_drupal-profiles Removing volume composeassignment2_drupal-data Removing volume composeassignment2_drupal-themes ~> docker image rm custom-drupal Untagged: custom-drupal:latest Deleted: sha256:73fc50f328c1746dc7ad012afd2205ce61fcdd87b9c0987e1cc51df8112bbb79 Deleted: sha256:7b20122f66047fdaeedccf6b3a8154d0c223522f61fef1e508faf370dd1be6b8 Deleted: sha256:d7746c2ea0857b4c8eafc94f72ada58121923518007fe772432540e415dc4117 Deleted: sha256:a35e684732c9ba463c39d703c08949dc4562f1b31240f7c490314ea2f58f6f05 Deleted: sha256:50690d4c05f0c9850ffb8021dea948e87fcc0787304500fb29f0bd0af18d254b Deleted: sha256:b09b8aec0991a5ce70daa8542869e5f723ec88b16e545949301ea038161de3a5
- Great about this way is that we can keep our images and our containers clean
- That way if we are shooting around the projects we can have more generic containers and our data will stay there when w switched back to this project, etc.