LAMP Server (Docker)
- References
- Files
- Creating LAMP
- Checking PHP
- Running PHP code (Interactive shell)
- Connecting to Mysql
- Docker commands
References
Files
https://ifpb.github.io/php-guide/lamp/docker-php-apache.zip
$ tree . -a
.
├── .env
├── Dockerfile
├── README.md
├── docker-compose.yml
└── src
    └── index.php
1 directory, 5 file
.env:
MYSQL_ROOT_PASSWORD=secret
MYSQL_DATABASE=example
MYSQL_USER=devuser
MYSQL_PASSWORD=devpass
docker-compose.yml:
version: "3"
services:
  web:
    container_name: web
    image: ifpb/php:7.3-apache-pdo
    build: .
    networks:
      - app-tier
    ports:
      - 8080:80
    volumes:
      - ./src/:/var/www/html/
    depends_on:
      - mysql
  mysql:
    container_name: mysql
    image: mysql:8.0
    command:
      - --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    networks:
      - app-tier
    ports:
      - 3306:3306
  adminer:
    container_name: adminer
    image: adminer:4.7.5
    restart: always
    networks:
      - app-tier
    ports:
      - 8081:8080
    depends_on:
      - mysql
networks:
  app-tier:
    driver: bridge
Dockerfile:
FROM php:7.3-apache
RUN apt -y update \
  && apt install -y \
  mariadb-client
# pdo_mysql package
RUN docker-php-ext-install pdo_mysql
Creating LAMP
$ docker-compose up -d
$ docker-compose ps
$ curl -i http://localhost:8080/
$ docker-compose down
Checking PHP
$ docker-compose exec web bash
$ php -i
$ php -m
Running PHP code (Interactive shell)
$ docker run -it --rm --name php -v "$PWD":/usr/src/app -w /usr/src/app php:alpine php
# php --version
$ alias php= 'docker run -it --rm --name php -v "$PWD":/usr/src/app -w /usr/src/app php:alpine php'
$ php --version
$ php -a
Interactive shell
php > $x = 10;
php > echo $x;
10
php > exit
Connecting to Mysql
$ docker-compose exec mysql bash
# mysql -u root -p
mysql> SHOW DATABASES;
Docker commands
- docker exec -it <name> bash
- docker exec -it <name> bash
- docker ps
- docker-compose down
- docker-compose up -d
- docker-comppse ps
- docker-comppse exec <service> <command>