Theater project's Docker setup
After installing the Docker, in case of not having to run commands using sudo,
add your user to docker group.
sudo usermod -aG docker yourusername. Log out
and log in into your account again to make an effect after running this command.
NB! Make sure that your
docker version is at least 1.10.0 and
version at least 1.6.0.
Add the following hosts to your hosts file:
- aire.l (main AIRE application);
- kiosk.l (planning for orchestras and choirs);
- plaan.l (calendar application for all employees);
- pma.l (phpMyAdmin console);
- es.l (dashboard for ElasticSearch is at http://es.l:9200/_plugin/head/);
- mailcatcher.l (catches all e-mails sent by the application);
Setting up aire, kiosk and plaan projects
The projects should be located under [project name]/data/http, where [project name]
should be either aire, kiosk or plaan. If you already have the projects set up on
your host machine, you could symlink them to the according folders, if not, you
could just set them up in the directories mentioned earlier.
# (This example presumes you have all your projects in /home/user/projects/) $ cd /home/user/projects/docker-setup/aire/data $ ln -s ../../../aire http
PS! Do not use ~ in here !!!
Next you will have to run
composer install in both of the projects' containers
(aire and kiosk). We'll go over how to access the containers later down the line.
PS! If you are not starting fresh(you have the projects already set up on your host and
you're just moving/renaming directories), you need to delete app/config/parameters.yml
files in aire and kiosk projects before running
Into the plaan project's params.php you need enter the following:
'db_host' => getenv('ENV_DB_HOST'),
'db_user' => getenv('ENV_DB_USER'),
'db_pass' => getenv('ENV_DB_PASS'),
'db_aire_name' => 'aire',
'db_estonia_name' => 'estonia',
'kiosk_host' => getenv('KIOSK_HOST'),
'plaan_host' => getenv('PLAAN_HOST'),
'aire_host' => getenv('AIRE_HOST'),
Booting and accessing the containers
docker-compose up is what you run in this project's root dir(.../docker-setup) to
boot up the containers(add the flag -d if you want to run them in the background)
To enter a specific container, ie Aire's container, you need to run
docker-compose run --rm aire bash
(adding --rm to run will remove the container
after you log out, otherwise you soon end up with many useless leftover-containers).
Similarly you can enter the other containers(services) such as kiosk, plaan, db,
es.. To see all of the services and their configuration open docker-compose.yml.
Be sure to run
npm install the first time you enter the containers aswell.
This step can not be automated because during the building of the container data
volumes are not yet mounted and there is no packages.json file in /data/http directory.
Data volumes are mounted during the creation of the containers.
When first setting up your project you also need to run
bin/reset.sh dev in
aire's container in the
data/http directory. This sets up the
In addition to that, you also need to set up the
estonia database (look below).
The reset script is also useful later on if you manage to mess up your database
and/or migrations. When that happens, then just rerun
bin/reset.sh dev in aire's
container (bear in mind you lose all the data in your
aire database, you only
keep the data that is generated by the fixtures)
First you need to get an sql dump of the database, ask a fellow coworker to share
it with you. When you have a copy of the database, move it to your computer's
/tmp directory and make sure the dump is named
opera-estonia.sql. Next navigate
docker-setup directory and if you have not done so already, run
docker-composer up (remember the -d flag, if you want to run the containers in
the background). When the containers are running, create a new database named
estonia (check below) and run the next command to import the database:
docker-compose run --rm db sh -c 'exec mysql -h"$DB_PORT_3306_TCP_ADDR" -P"$DB_PORT_3306_TCP_PORT" -uroot -p"$DB_ENV_MYSQL_ROOT_PASSWORD" estonia < /tmp/opera-estonia.sql'
Creating a new database
By this point you should already be running your containers so open your browser
and go to
pma.l, log in using
Databases, enter the name
utf8_general_ci from the
Collation dropdown and click
We do have CI set up, but when you need to deploy new code manually (for example
to the beta server), you can do that in
docker-setup project's root directory
from your host machine (where you run the docker-compse commands). All that has
to be done, is to enter
bin/deploy.sh and follow the instructions on screen
(pay attention, you also have the option to deploy to the live servers).
If you'd like to profile AIRE using Blackfire, you must set up the
tokens and ids (you can get them from the installation instructions)
as environment variables in the host machine. Requests must be made using the
IP address rather than the host. The
following illustrates this:
$ export BLACKFIRE_SERVER_ID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX $ export BLACKFIRE_SERVER_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX $ export BLACKFIRE_CLIENT_ID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX $ export BLACKFIRE_CLIENT_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX $ docker-compose up -d $ docker ps | grep aire 50da766f2693 dockertheater_aire [...] $ docker exec -it 50da766f2693 bash -c "cat /etc/hosts" | grep 50da766f2693 172.17.0.10 50da766f2693 $ docker run -it --rm \ -e BLACKFIRE_CLIENT_ID \ -e BLACKFIRE_CLIENT_TOKEN \ blackfire/blackfire \ blackfire curl 'http://172.17.0.10/app_dev.php'