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.