2.9 KiB
Documentation
Home | Overview | Configuration | Usage | Updating | Info | PHP Projects | Emails | Logs | Intranet | FAQ
Info
Available containers
It is best to use the hostnames and not to rely on the ip addresses as they might change. In most cases however you can even use 127.0.0.1
or localhost
(See background section below).
E.g.: When you want to setup a MySQL database connection use
mysql
or127.0.0.1
as the hostname.
Container | Container name | Hostname | IP Address |
---|---|---|---|
PHP / HHVM | php | php | 172.16.238.10 |
Apache / Nginx | http | http | 172.16.238.11 |
MySQL / MariaDB | mysql | mysql | 172.16.238.12 |
PostgreSQL | pgsql | pgsql | 172.16.238.13 |
Redis | redis | redis | 172.16.238.14 |
Memcahed | memcached | memcached | 172.16.238.15 |
Background
Background - PHP Container
The php
container is the center of all container. Everything happens in there.
This is also the reason it does some more magic than actually required.
Remote ports and remote sockets are made available to the php
container.
The PHP container is using socat to
- forward the remote mysql port
3306
(on the mysql container) to its own127.0.0.1:3306
- forward the remote pgsql port
5432
(on the mysql container) to its own127.0.0.1:5432
- forward the remote redis port
6379
(on the mysql container) to its own127.0.0.1:6379
The PHP container is using volumes to
- mount the remote
mysql.sock
to its own filesystem into a path configured in itsphp.ini
Background - Docker Host
The docker host (your computer) does exactly the same as the php
container.
- container mysql port
3306
is exposed to the host on port127.0.0.1:3306
- container pgsql port
5432
is exposed to the host on port127.0.0.1:5432
- container redis port
6379
is exposed to the host on port127.0.0.1:6379
Also the database sockets from the container are mounted into the host.
Background - Benefit of the above
With the PHP container and the docker host (your computer) behaving the same it is possible to write your php applications like this:
<?php
mysql_connect('127.0.0.1', 'user', 'pass');
// or using sockets
mysql_connect('localhost', 'user', 'pass');
This setup can then either be served by the docker or by your host computer (if you shutdown docker and start your local lamp stack)
Background - Implications
Messing around with socket mounts has caused some problems in the past and it might be subject of change.
In order to stay compatible it is your best choice to use 127.0.0.1
instead of localhost
.