Exemple de docker amb Apache, PHP i MySQL

De binefa.com
Salta a la navegació Salta a la cerca

Docker php-sm9b personalitzat amb Apache i PHP

Directori de treball

Feu un directori al directori home del vostre usuari:

cd ~
mkdir php-sm9b

Accediu-hi:

cd php-sm9b

Dockerfile

Editeu Dockerfile:

nano Dockerfile

Aquest ha de ser el contingut de l'arxiu quan feu cat Dockerfile:

FROM php:8.2-apache

# Instal·lació de les dependències per als mòduls PHP
RUN apt-get update && \
   apt-get install -y zip libzip-dev libpng-dev

# Instal·lació de mòduls PHP addicionals
RUN docker-php-ext-install mysqli pdo pdo_mysql gd zip

Genereu la imatge:

docker build -t php-sm9b .

Verifiqueu que heu generat la imatge fent:

docker images

Directori de treball del docker compost amb php-sm9b i MySQL

Feu un directori al directori home del vostre usuari:

cd ~
mkdir lamp-sm9

Accediu-hi:

cd lamp-sm9

Xarxa local de contenidors docker

  • Verifiqueu si teniu la xarxa net de dockers al vostre sistema:
docker network inspect net
  • Si no teniu net com una xarxa local de contenidors :
docker network create net

docker-compose.yml

Editeu docker-compose.yml:

nano docker-compose.yml

Aquest ha de ser el contingut de l'arxiu quan feu cat docker-compose.yml:

version: '3.8'
services:
 web:
   image: php-sm9b:latest 
   ports:
     - "8080:80"    #this line maps your pc port to the container port
     - "8443:443"    #this line maps your pc port to the container port
     - "3311:3306"    #this line maps your pc port to the container port
   depends_on:
     - db    #this line links this container to the db container
   volumes:
     - ./html:/var/www/html    #this line maps the content of ./html in your pc to the /var/www/html of the container
   networks:
     - "net"
 db:
   container_name: sm9b_asix2_db_docker
   image: mysql:8.1.0    
   ports:
     - 3311:3306
   environment:
     MYSQL_ROOT_PASSWORD: fjeclot    #you can change the mysql root password here
     MYSQL_DATABASE: aula311    #you can change the database name here
     MYSQL_USER: iot
     MYSQL_PASSWORD: iot
   volumes:
     - ./mysql_data:/var/lib/mysql    #this line maps the content of ./mysql_data in your pc to the /var/lib/mysql of the container
   networks:
     - "net"
 phpmyadmin:
   container_name: sm9b_asix2_phpmyadmin_docker
   image: phpmyadmin/phpmyadmin
   ports:
     - "8011:80"    #this line maps your pc port to the container port
   depends_on:
     - db    #this line links this container to the db container
   environment:
     PMA_HOST: db
   networks:
     - "net"

volumes:
 certs:
 html:
 vhost:
 dhparam:
    
networks:
 net:
  external: true

Posada en marxa del docker:

docker compose run --name sm9b_asix2 -d web

Més

 40  docker inspect net
  41  cat docker-compose.yml 
  42  docker compose run --name sm9b_asix2 -d web
  43  ls -lsa
  44  cd html
  45  ls -ls
  46  nano index.php
  47  ls -ls
  48  sudo chmod 777 html/
  49  cd html
  50  nano index.php
  51  cat index.php 
  52  docker images
  53  docker ps -a
  54  docker inspect -f 'Plantilla:Range .NetworkSettings.NetworksPlantilla:.IPAddressPlantilla:End' sm9b_asix2_db_docker
  55  nano index.php
  56  docker images
  57  docker ps -a
  58  docker stop ba3d140ff7d2
  59  docker stop 9035981b91e6
  60  docker rm 9035981b91e6
  61  docker rm  ba3d140ff7d2
  62  docker ps -a
  63  docker compose run --name sm9b_asix2 -p 8080:8080 -p 8011:8011 -d web
  64  docker ps -a