0% encontró este documento útil (0 votos)
183 vistas4 páginas

Guía Docker: Apache y PHP en Contenedores

El primer documento describe cómo crear una imagen de Docker con Apache 2.4, PHP 7.3 y otras extensiones como XDebug y MySQL. Se crea un archivo Dockerfile que especifica las instrucciones para compilar la imagen y luego se compila e inspecciona la imagen creada. El segundo documento describe cómo crear una imagen de Docker con Apache y PHP para un proyecto de facturación y cómo configurar Docker Compose para ejecutar contenedores de la aplicación y MySQL.

Cargado por

VectorySigma
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
183 vistas4 páginas

Guía Docker: Apache y PHP en Contenedores

El primer documento describe cómo crear una imagen de Docker con Apache 2.4, PHP 7.3 y otras extensiones como XDebug y MySQL. Se crea un archivo Dockerfile que especifica las instrucciones para compilar la imagen y luego se compila e inspecciona la imagen creada. El segundo documento describe cómo crear una imagen de Docker con Apache y PHP para un proyecto de facturación y cómo configurar Docker Compose para ejecutar contenedores de la aplicación y MySQL.

Cargado por

VectorySigma
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

Docker

Crear contenedor Apache2.4-PHP7.3

Se crea un directorio para trabajar la compilación del docker.

En el se crea el archivo dockerfile con el siguiente contenido:

FROM php:7.3-apache

RUN apt update && apt -y upgrade

RUN apt install -y nano

ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/
master/install-php-extensions /usr/local/bin/

RUN chmod uga+x /usr/local/bin/install-php-extensions && sync && \


install-php-extensions \
xdebug \
pdo_mysql \
gd \
zip \
xmlrpc \
soap \
intl

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

RUN a2enmod rewrite

RUN chown www-data:www-data /var/www/ -R

RUN mkdir -p /config

RUN echo '\n#####\n\n# Include custom folder\nIncludeOptional /config/*.conf\n\n#


Set ServerName\nServerName localhost' >> /etc/apache2/apache2.conf

RUN sed -i '/ServerTokens OS/c\ServerTokens Prod'


/etc/apache2/conf-enabled/security.conf

RUN sed -i '/ServerSignature On/c\ServerSignature Off'


/etc/apache2/conf-enabled/security.conf

#install node

RUN apt-get update \


&& yes | apt-get install gconf-service libasound2 libatk1.0-0 libc6 libcairo2
libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf$
&& yes | apt-get install git-core curl build-essential openssl libssl-dev \
&& yes | apt-get install nodejs npm
WORKDIR /home/proyectos_node/
COPY package*.json ./
RUN npm install -g \
&& npm install -g puppeteer --unsafe-perm=true
RUN apt-get install -y libgbm-dev
COPY . .
CMD /usr/sbin/apache2ctl -D FOREGROUND
CMD [ "node", "index.js" ]
Se ejecuta el comando para compilar la imagen del contenedor. teniendo en cuenta el
nombre y la versión que se va a asignar.

docker build -t apache-php:beta1 .

Si no se observan errores se verifica su creación con el comando:

docker image ls

Luego, en la carpeta donde se vaya a manejar el contenedor se crea el archivo


docker-compose.yml con el siguiente contenido.

---
version: "2"
services:
apache:
image: apache-php:beta1
container_name: ApacheWebServer

volumes:
- ./www_data:/var/www/html
- ./www_conf:/config

restart: unless-stopped

Docker Servicom Tarificador

Primero se crea la imagen apache:

From php:7.4-apache
RUN apt-get update
RUN apt-get install nano
RUN a2enmod rewrite
RUN apt-get install net-tools
RUN apt-get update && apt-get install -y libicu-dev \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl
RUN apt-get update && apt-get install -y \
zlib1g-dev \
libzip-dev
RUN docker-php-ext-install mysqli zip pdo pdo_mysql

para correr la imagen se puede usar el siguiente comando:

docker build -t servicom:v1

se puede verificar la imagen dandole

docker images

el resultado debe ser:

https://wiki.nethexa.com/uploads/images/gallery/2020-07/n4JWumnrtJCRjNV3-
servicom1.png
La imagen de mysql ya esta existe en los repositorios docker por lo que con darle :

docker pull mysql:5.7

deberíamos tener la imagen instalada. Con esto solo queda contruir el docker-
compose.yaml

nano docker-compose.yaml

version: "3"
services:
miservicio_mysql:
image: mysql:5.7
environment:
- MYSQL_DATABASE=servicom
- MYSQL_ROOT_PASSWORD=T4ctical**1 #clave del usuario root
- MYSQL_USER=user_servicom
- MYSQL_PASSWORD=T4ctical_user
volumes:
# Montamos un volumen para MySQL para no perder los datos de bd
- ./volumenes/mysql:/var/lib/mysql
ports:
- 8881:3306

restart: unless-stopped

servicom_php:
image: servicom:v1
volumes:
# Montamos nuestra web desde fuera en el directorio web del contenedor
- ./volumenes/miweb/:/var/www/html
- ./volumenes/apache/virtualhost.conf:/etc/apache2/sites-enabled/000-
default.conf

restart: unless-stopped

se guarda el archivo.

crear la ruta volumenes/apache/virtualhost.conf y agregar lo siguiente:

VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName servicom.com
DocumentRoot "/var/www/html/servicom_billing/public"

<Directory "/var/www/html/servicom_billing/public">
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ReWriteEngine On
</Directory>

LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Ya con eso esta listo para crear los contenedores.

en la ubicacion del docker-compose por consola escribir:

docker-compose up -d

una vez que termine revisar que los contenedores esten arriba.

docker ps

En los volumenes creados el de miweb pegar el proyecto de servicom_billing editando


el archivo .env con los datos de la conexion que se dieron en el mysql

https://wiki.nethexa.com/uploads/images/gallery/2020-07/wvfQaWnRxVlhNS6Y-
servicom2.png

Con el worbeanch puedes restaurar la base de datos creada. (pueden usar el usuario
no root para hacer la restauración).

Prueben el proyecto.

Comandos básico de Docker:

docker ps : muestra los contenedores activos.


docker ps -a : muestra los contenedores tanto activo como caidos.
docker logs -f idcontainer : permite ver el log del contenedor en tiempo real.
docker images : muestras las imagenes disponibles del docker.
docker exec -it idcontainer bash : permite ingresar al contenedor como usuario
root.
service docker restart : reinicia el servicio de docker.
docker start idcontainer : inicia un contenedor.
docker stop idcontainer : detiene un contenedor.
docker-compose up -d : levanta los contenedores, si ya estan levantados solo los
actualiza con el -d indicamos que lo haga en segundo plano.

También podría gustarte