Docker-Compose es una herramienta de línea de comandos para definir y administrar contenedores docker de múltiples contenedores como si fueran un solo servicio. Compose está escrito en python y se puede instalar con el comando pip de Python. Con componer, podemos ejecutar varios contenedores docker con un solo comando. Le permite crear un contenedor como servicio, excelente para su entorno de desarrollo, prueba y preparación.
En este tutorial, lo guiaré paso a paso para usar docker-compose. Implementaremos 'Wordpress ' con Nginx, MySQL y PHP-FPM. Cada servicio tiene su propio contenedor y usaremos imágenes del registro del concentrador docker. Le mostraré cómo crear contenedores a partir de imágenes docker y administrar todos los contenedores con docker-compose.
Requisito previo
- Ubuntu 16.04
- Privilegios de raíz
Paso 1:instalar Docker
Comenzaremos desde cero, instalando docker y docker compose manualmente con el comando apt.
Antes de comenzar, actualice el repositorio de Ubuntu e instale las últimas actualizaciones:
sudo apt-get update
sudo apt-get upgrade
De forma predeterminada, Docker está disponible en el repositorio de Ubuntu, por lo que podemos continuar instalándolo de inmediato:
sudo apt-get install -y docker.io
Cuando finalice la instalación, inicie la ventana acoplable y agréguela para que se inicie automáticamente en el momento del arranque:
systemctl start docker
systemctl enable docker
Ahora pruebe la instalación de su ventana acoplable con el siguiente comando:
docker run hello-world
Verás hello-world desde la ventana acoplable.
Paso 2:instalar Docker-Compose
Docker-compose es un script escrito en python, está disponible en el repositorio PyPI python y se puede instalar con python pip. Entonces, primero debemos instalar python y python pip en nuestro sistema.
Instale python y python-pip:
sudo apt-get install -y python python-pip
A continuación, instale docker-compose con el comando pip:
pip install docker-compose
espere a que termine el proceso de instalación. Luego verifique la instalación con el comando docker-compose:
docker-compose -v
Obtendrá la versión docker-compose.
Paso 3 - Configurar Wordpress
Ahora, docker y docker-compose están instalados en el sistema. En este paso, le mostraremos cómo crear y configurar el entorno docker-compose para nuestro proyecto de WordPress.
Implementaremos la aplicación PHP 'Wordpress' con Nginx como servidor web y MariaDB para la base de datos MySQL como contenedores docker administrados por docker-compose. Cada aplicación (Wordpress, Nginx y MySQL) se ejecutará en su propio contenedor, puede ver la lista a continuación:
- Nginx :Usamos la imagen oficial de la ventana acoplable, última versión 'nginx:más reciente'.
- Wordpress :Wordpress proporciona algunas imágenes de docker en docker-hub, y usaremos WordPress 4.7 con PHP-FPM 7.0.
-
Por lo tanto, necesitamos 3 imágenes de la ventana acoplable del registro del concentrador de la ventana acoplable.
No ejecutaremos docker como root, usaremos el usuario normal de Linux. Así que simplemente cree un nuevo usuario con el comando a continuación (siéntase libre de usar un nombre de usuario diferente aquí, solo asegúrese de que el usuario aún no exista. Si elige un nombre diferente, asegúrese de cambiarlo en todos los comandos que siguen en este tutorial):/P>
useradd -m -s /bin/bash hakase
passwd hakase
Ahora agregue el usuario a la 'docker ' grupo para que el usuario pueda usar el comando docker y reiniciar el servicio docker:
usermod -a -G docker hakase
systemctl restart docker
Inicie sesión con el usuario 'hakase' y cree un nuevo directorio para el proyecto de WordPress:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/
A continuación, cree un nuevo archivo llamado 'docker-compose.yml ', y crea un nuevo directorio para el proyecto. Simplemente escriba los comandos a continuación:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/
Lista de archivos y directorios del proyecto:
- docker-compose.yml :Este es el archivo de configuración de docker-compose, debe crearlo al iniciar un nuevo proyecto de docker-compose.
- nginx/ :este directorio se usa para nuestra configuración adicional de nginx, como el host virtual, etc.
- datos de base de datos/ :El volumen/directorio para los datos mysql. El sql de los datos '/var/lib/mysql' está montado en el directorio db-data.
- registros/ :Directorio para registro de aplicaciones, nginx, mariadb y php-fpm.
- wordpress/: Todos los archivos de wordpress estarán disponibles en ese directorio.
En el directorio 'nginx', cree un nuevo archivo de configuración para nuestro host virtual de wordpress.
Crea un nuevo archivo wordpress.conf:
vim nginx/wordpress.conf
Pegue la configuración a continuación:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Guarde el archivo y salga de vim.
Paso 4:configurar Docker-Compose
En este paso, comenzaremos a editar el archivo docker-compose.yml. Cuando desee iniciar el proyecto docker-compose, asegúrese de crear primero el archivo docker-compose.yml como lo hacemos a continuación.
Edite docker-compose.yml con vim:
vim docker-compose.yml
Defina sus servicios, en la primera línea definiremos Nginx. Estamos utilizando la imagen acoplable oficial de Nginx, la última versión, y configuramos la asignación de puertos para el puerto 80 en el contenedor al puerto 80 en el host. A continuación, configure los volúmenes de la ventana acoplable, el volumen para nuestra configuración de host virtual Nginx, el volumen para los archivos de registro de Nginx y el volumen del directorio raíz web '/var/www/html'. El contenedor de Nginx está vinculado al contenedor de WordPress.
Pegue la configuración a continuación:
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: always
A continuación, defina el servidor MySQL. Estamos usando la imagen de MariaDB, última versión. Configure la asignación de puertos para el contenedor en el puerto 3306 y configure la contraseña raíz de MySQL con la variable de entorno 'MYSQL_ROOT_PASSWORD'. Finalmente, configure el volumen del contenedor para el directorio de datos de MySQL.
Pegue la configuración a continuación:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: always
Luego configuraremos el servicio de WordPress usando la imagen acoplable de WordPress 4.7 con PHP-FPM 7.0 instalado. Configure el puerto para PHP-fpm en el puerto 9000, habilite el volumen acoplable para el directorio web '/var/www/html' en el directorio host 'wordpress', configure la base de datos definiendo la variable de entorno de WordPress y vincule el servicio de WordPress a mysql.
Pegue la configuración a continuación:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: always
Después de agregar las tres partes en el archivo docker-compose.yml, guarde el archivo y salga del editor vim.
Nuestra configuración docker-compose está lista.
Paso 5:ejecutar Docker-compose
Comience a crear los nuevos contenedores con docker compose. Vaya al directorio wordpress-compose e inicie los nuevos contenedores basados en nuestro archivo de composición.
cd ~/wordpress-compose/
docker-compose up -d
Puede ver los resultados del comando. Se crearon tres contenedores. Verifiquemos el estado del contenedor con la opción ps:
docker-compose ps
A continuación se muestra el resultado:
Si desea ver la salida del registro del contenedor, puede usar los siguientes comandos:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress
Registros del contenedor:
Nota :
Si ve en el registro del contenedor de WordPress un error sobre el rechazo de la conexión MySQL, ignórelo.
Paso 6 - Instalar Wordpress
Antes de realizar este paso, verifiquemos los puertos disponibles/puertos abiertos en el sistema. Asegúrate de tener 3 puertos abiertos, puerto 80, 3306 y puerto 9000.
netstat -plntu
Los resultados están a continuación:
Ahora abra su navegador web y escriba la URL del servidor o la dirección IP.
http://IP del servidor/
Puedes ver la página de instalación de WordPress. Elija su idioma y haga clic en 'Continuar '.
Complete los detalles de su sitio web, como el título del sitio, el usuario administrador y la contraseña, su dirección de correo electrónico y luego haga clic en 'Instalar Wordpress '.
Será redirigido al 'Panel de administración de WordPress '.
Y esta es mi publicación de muestra de WordPress hola mundo.
Wordpress se ha instalado con docker-compose.
Paso 7:Acceso al contenedor Docker
Este es un paso adicional sobre cómo acceder a un contenedor con docker-compose. Verifique que todos los contenedores estén disponibles y muestre su estado:
docker-compose ps
Ya tenemos 3 contenedores, ahora podemos intentar iniciar sesión en cada contenedor. Inicie sesión en el primer contenedor de Nginx con el comando docker-compose.
docker-compose exec nginx bash
nginx :nombre del servicio en el archivo docker-compose docker-compose.yml
bash :ejecuta el comando bash shell
Ahora revise nuestra configuración de host virtual de WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Los archivos están disponibles en el contenedor.
A continuación, intente iniciar sesión en el contenedor mysql y luego inicie sesión en el shell mysql con nuestra contraseña en el archivo de redacción.
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD
Ver la lista de bases de datos:
show databases;
Verá nuestra base de datos de WordPress.
En el contenedor 'wordpress', verá todos los archivos de WordPress.
docker-compose exec wordpress bash
ls -lah
Todos los contenedores son accesibles.