GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Nasaďte WordPress na Docker pomocí Ansible

Přehled

Následující článek se bude zabývat kroky, jak nasadit WordPress na Docker pomocí Ansible. Účelem tohoto postupu je automatizovat proces nasazení WordPressu na Docker pomocí Ansible playbooku.

Aby bylo možné úspěšně nasadit wordpress na docker pomocí ansible, musíte nejprve nakonfigurovat některé požadavky (uvedené níže v předpokladech)

Předpoklady

  • Docker nainstalován a spuštěn na cílovém hostitelském počítači (Instalaci Dockeru lze také automatizovat pomocí Ansible – odkaz na POST)
  • Přístup SSH povolen na vzdálených hostitelích s přihlašovacími parametry přednastavenými v souboru Ansible hosts
  • Ansible nainstalovaný na klientském počítači (váš počítač)
  • Nainstalovaný modul Python a Python docker pro Ansible na cílovém počítači
  • Na vašem místním počítači nainstalovaný Python

Nainstalujte modul Python Docker pro Ansible

Většina linuxových distribucí má Python3 předinstalovaný, ale u jiných může chybět modul Python Docker, který Ansible používá. Poznáte to, pokud se zobrazí chyba, že modul chybí nebo nebyl nalezen. Obrázek níže uvedené chyby:

Zmíněný modul je vlastně Docker SDK, který Python používá pro práci s Dockerem. Nejjednodušší způsob instalace modulu Python Docker je pomocí nástroje „pip“. Pokud nástroj „pip“ chybí, můžete snadno nainstalovat a poté s ním nainstalovat modul python docker:

Debian/Ubuntu

sudo apt install python3-pip

Fedora

sudo dnf install python3-pip

CentOS/RedHat

sudo yum python3-pip

Po instalaci modulu pip spusťte příkaz k instalaci modulu docker:

pip3 install docker

Pokud náhodou narazíte v Ansible na chybu, že nemůže najít modul Python, přidejte proměnnou interpretu pythonu do svého souboru hosts. Ve většině případů se nachází buď v „/usr/bin/python3“ nebo „/usr/lib/python3“ .

Chyba vypadá asi takto:

Proměnná interpret v souboru hosts vypadá asi takto:

ansible_python_interpreter=/usr/bin/python3

Zapište si hostitele do souboru hostitelů s parametry přihlášení

První krok – Přidání nezbytných parametrů do souboru hostitelů, aby se Ansible mohl dostat, přihlásit se a komunikovat s naším strojem:

sudo nano /etc/ansible/hosts

V souboru hosts přidejte parametry, aby vypadaly nějak takto:

Po přidání nezbytných parametrů pro našeho vzdáleného hostitele soubor uložte a ukončete.

Příručka Ansible pro nasazení WordPress na Docker

Pro toto nasazení budeme používat následující příručku:

---
- hosts: docker
    vars:
      db_volume: mariadb
      wordpress: wordpress
    tasks:
      - name: Deploy MariaDB server
        docker_container:
          image: mariadb
          name: mariadb
          volumes:
            - "{{db_volume}}:/var/lib/mysql"
          env:
            MYSQL_ROOT_PASSWORD: somerootpassword
            MYSQL_PASSWORD: somemysqlpassword
            MYSQL_DATABASE: db
            MYSQL_USER: mysqluser

      - name: Deploy WordPress
        docker_container:
          image: wordpress
          name: wordpress
          restart_policy: always
          ports:
            - "8080:80"
          links:
            - "{{db_volume}}:/var/lib/mysql"
          volumes:
            - "{{wordpress}}:/var/www/html"
          env:
            MYSQL_PASSWORD: somemysqlpassword
            MYSQL_DATABASE: db
            MYSQL_USER: mysqluser
            MYSQL_HOST: mariadb

Klidně si to zkopírujte.

Rozdělení příručky:

hosts: docker // variable to target only machine hosts that are in the docker group
vars: 

db_volume: mariadb 

wordpress: wordpress  // [OPTIONAL] defined variables for each container. These are used for setting volumes on the host and are matching the container names.
tasks: // Defined a task which will deploy a MariaDB container(MariaDB database server in container form). Task will pull down the official Docker image of MariaDB from the Docker hub, set a name container name "mariadb" and set a persistent volume on the host machine for the database storage.

- name: Deploy MariaDB server // Task name

docker_container: // Docker function that Ansible will use

image: mariadb  // Docker image to pull down

name: mariadb // Specify the container name

volumes: - "{{db_volume}}:/var/lib/mysql" // Specify a volume on the host machine for persistent storage
env: // Environment variables to define parameters for the database such as the root password, admin user password, name of the database and the user name of the new user on the MariaDB server

MYSQL_ROOT_PASSWORD: somerootpassword // MySQL root password

MYSQL_PASSWORD: somemysqlpassword // MySQL admin/standard user password to be used by WordPress

MYSQL_DATABASE: db // MySQL database name

MYSQL_USER: mysqluser // Admin/standard user username for WordPress to use
// This the task that will deploy the WordPress Docker container. Same just like for the MariaDB container, Ansible will pull down the official WordPress image from the Docker hub. Here we also specified the container restart policy(when to restart the container) and also set number of ports to expose on the container and bind to the host, so that the container can be accessible via browser and http protocol.

- name: Deploy WordPress // Task name

docker_container: // Docker function that Ansible will use

image: wordpress // Docker image to pull down

name: wordpress // Specify the container name

restart_policy: always // Set attribute for container restart

ports: - "8080:80" // Specify ports to expose on the container to be accessible via web browser

links:
- "{{db_volume}}:/var/lib/mysql // Variable to specify the link to the MySQL server so that WordPress can connect to the database

volumes: - "{{wordpress}}:/var/www/html" // Specify a volume on the host machine for persistent storage
// Environment variables for the MariaDB database, for WordPress to use in order to connect to the database and use the database for data storage.
env: 

MYSQL_PASSWORD: somemysqlpassword // Variable to specify MySQL for WordPress to use

MYSQL_DATABASE: db // MySQL database name which will WordPress connect to 

MYSQL_USER: mysqluser // MySQL user for WordPress to use

MYSQL_HOST: mariadb // MySQL database server to connect to(docker container name we previously set)

Nasaďte WordPress na Docker pomocí Ansible

Jakmile budeme mít naši příručku Ansible, spusťte ji:

docker deploy-wordpress.yml -l docker

Očekávané výsledky:

Zkontrolujte, zda jsou kontejnery spuštěny a zda je WordPress přístupný prostřednictvím prohlížeče:

Shrnutí

Abychom článek shrnuli – podařilo se nám úspěšně nasadit WordPress na Docker pomocí Ansible a tím jsme zautomatizovali proces nasazení WordPressu na Docker. Aby byl tento proces úspěšný, bylo nutné prostředí Ansible nastavit pomocí modulu Python a Python Docker. Poté jsme napsali a spustili Ansible playbook, který nasazuje WordPress s databází a má také perzistenci dat, takže data a soubory nejsou uloženy v kontejneru Docker.

Děkuji za váš čas…


Docker
  1. Jak nasadit mikroslužby s Dockerem

  2. Jak nasadit PostgreSQL jako Docker Container

  3. Jak nainstalovat Docker na CentOS

  1. Víceprůchodové virtuální stroje pomocí Ansible

  2. Nastavte Nextcloud s Redis pomocí Dockeru

  3. Nainstalujte Docker a WordPress na Ubuntu

  1. Nasaďte WordPress na Docker pomocí Ansible

  2. Nasaďte Nextcloud na Docker pomocí Ansible

  3. Jak nainstalovat Docker pomocí Ansible [Debian/Ubuntu]