# contao-docker-test #Installation: - Go to ".docker/contao" folder and create docker containers: `docker-compose up -d` - Create a database for contao in database container: - One way to do so is to open up the "Database"-Tab of PhpStorm - Click on "+" -> Data Source -> MariaDB - Add a name to configuration e.g. contao-db - Host: localhost - Port: 3306 - User: root (according to database-service in docker-compose.yml) - Password: root (according to database-service in docker-compose.yml) - Once you're connected go to Query Console (icon at the top "QL") and create the database for contao - Enter the following line into the console and press the "play"-button to execute the query: - `CREATE DATABASE contao CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;` - The database name is free to chose but in this example the database name 'contao' is being used - Another way is to connect to phpmyadmin via [localhost:8080](http://localhost/8080) as it's configured in docker-compose.yml - Open [contao manager](http://localhost/contao/install) in browser after database creation in order to install contao - Step through the installation process until you get to enter the database credentials - NOTE: the 'host' isn't 'localhost' here, use the name of the database service 'database' as it's configured in the docker-compose.yml - Finish the installation and have fun :) - Contao will be available here: [http://localhost/contao](http://localhost/contao) # Some important information - The database content is stored in a container which is bind-mounted to the 'db'-folder of the project - If you should renew your containers, make sure you don't delete this folder, since all database data is contained in there - Even if the container will be removed, the database data still exists in this folder and the data will be provided for the database container through the bind-mounting if you create a new database container - If you want to export the database, either do it via phpmyadmin or enter the container and use mysql dump - To enter a container e.g. the contao container run `docker exec -it contao /bin/bash`. - After this you're directly within the container and can browse through it's content via console. - If you did changes e.g. in the composer.json on your host machine (your computer - not within a container) to install or update bundles, then run e.g. `composer install` within the container - If you do changes on you host machine, these changes will be also available for the container via bind-mounting - To exit the container, simply run `exit` and you'll get back to the console of your host machine ;) # Links: - https://raphaelstaebler.medium.com/run-contao-4-inside-a-docker-container-96422278ea02 - https://github.com/wsargent/docker-cheat-sheet/blob/master/README.md - https://docs.tibco.com/pub/mash-local/4.3.0/doc/html/docker/GUID-BD850566-5B79-4915-987E-430FC38DAAE4.html # Some helpful docker commands: - `docker-compose up -d` - `docker-compose down` - `docker exec -it contao /bin/bash` - `docker build -t spt-docker-contao .` - `docker image rm spt-docker-contao` - `docker ps` - `docker ps --all` - `docker container stop $(docker container ls -aq)` - `docker container rm $(docker container ls -aq)` - `docker exec b768b668cb75 cat contao/composer.json` - `docker rmi $(docker images -q)` # Clean restart of Docker instance 1. Stop the container(s) using the following command: `docker-compose down` 2. Delete all containers using the following command: `docker rm -f $(docker ps -a -q)` 3. Delete all volumes using the following command: `docker volume rm $(docker volume ls -q)` 4. Restart the containers using the following command: `docker-compose up -d`