Dominik - 2018-06-01

Hi All,

I've created a docker-compose file to run php-addressbook which might be handy for others as well :-)

docker-compose.yml

version: '3.3'

services:
  phpaddressbook:
    container_name: addressbook_www
    image: php:7.1-apache-stretch
    restart: always
    ports:
      - "8080:80"
    volumes:
      - ./data/www:/var/www/html/
    command: >
      sh -c "docker-php-ext-install mysqli
      && apt-get update
      && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
      && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
      && docker-php-ext-install -j$$(nproc) gd
      && apache2-foreground
      "
  db:
    container_name: addressbook_db
    image: mariadb
    restart: always
    environment:
      MYSQL_DATABASE: addressbook
      MYSQL_USER: addressbook
      MYSQL_PASSWORD: addressbook
      MYSQL_ROOT_PASSWORD: addressbook
    volumes:
      - ./data/mysql/:/var/lib/mysql 

Folder Structure

php-addressbook/
├── data
│   ├── mysql <= holds DB files
│   └── www   <= hold php-addressbook files
├── docker-compose.yml

Download php-addressbook

cd php-addressbook/data/www
wget https://sourceforge.net/projects/php-addressbook/files/latest/download
unzip download
rm download
chown -R www-data:www-data .

Installation
1. Install docker and docker-compose
2. Create folder structure e.g. in /opt/docker
3. Create file docker-compose.yml
4. Download php-addressbok into the www folder
5. Browse http://localhost:8080/addressbook
6. Setup the database (host: addressbook_db, username/password: addressbook)
7. Run docker-compose up -d

Further considerations
1. This setup should be further secured, e.g. running behind a TLS and basic_auth enabled reverse proxy
2. Instead running a dedicated mysql-server you may want to use your existing DB server