GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Terapkan WordPress di Docker menggunakan Ansible

Ringkasan

Artikel berikut akan membahas langkah-langkah cara men-deploy WordPress di Docker menggunakan Ansible. Tujuan dari prosedur ini adalah untuk mengotomatiskan proses penyebaran WordPress di Docker dengan playbook Ansible.

Untuk men-deploy wordpress di docker menggunakan mungkin berhasil, ada beberapa persyaratan yang harus dikonfigurasi terlebih dahulu (tercantum di bawah dalam prasyarat)

Prasyarat

  • Docker terinstal dan berjalan di mesin host target (Instalasi Docker juga dapat diotomatiskan dengan Ansible – link ke POST)
  • Akses SSH diaktifkan pada host jarak jauh dengan parameter login yang telah ditetapkan di file host Ansible
  • Dapat diinstal pada mesin klien (mesin Anda)
  • Modul buruh pelabuhan Python dan Python yang diinstal untuk Ansible pada mesin target
  • Menginstal Python di mesin lokal Anda

Instal modul Python Docker untuk Ansible

Sebagian besar distro Linux memiliki Python3 yang sudah diinstal sebelumnya tetapi untuk yang lain modul Python Docker yang digunakan Ansible mungkin tidak ada. Anda akan tahu bahwa itu jika Anda mendapatkan kesalahan yang menyebutkan bahwa modul tersebut hilang atau tidak ditemukan. Contoh gambar kesalahan di bawah ini:

Modul yang disebutkan sebenarnya adalah Docker SDK yang digunakan Python untuk bekerja dengan Docker. Cara termudah untuk menginstal modul Python Docker adalah dengan alat "pip". Jika alat "pip" tidak ada, Anda dapat dengan mudah menginstal dan kemudian menginstal modul python docker:

Debian/Ubuntu

sudo apt install python3-pip

Fedora

sudo dnf install python3-pip

CentOS/RedHat

sudo yum python3-pip

Setelah Anda menginstal pip, kemudian jalankan perintah untuk menginstal modul docker:

pip3 install docker

Jika kebetulan, Anda menemukan kesalahan di Ansible yang tidak dapat menemukan modul Python, tambahkan variabel juru bahasa python di file host Anda. Biasanya terletak di “/usr/bin/python3” atau “/usr/lib/python3” .

Kesalahan terlihat seperti ini:

Variabel interpreter dalam file host terlihat seperti ini:

ansible_python_interpreter=/usr/bin/python3

Tuliskan host di file hosts dengan parameter login

Langkah pertama – Menambahkan parameter yang diperlukan dalam file host sehingga Ansible dapat menjangkau, login, dan berinteraksi dengan mesin kita:

sudo nano /etc/ansible/hosts

Di file host, tambahkan parameter agar terlihat seperti ini:

Setelah parameter yang diperlukan untuk host jarak jauh kami ditambahkan, simpan file dan keluar.

Playbook yang memungkinkan untuk penerapan WordPress di Docker

Untuk penerapan ini, kami akan menggunakan pedoman berikut:

---
- 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

Silakan salin saja.

Rincian Playbook:

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)

Terapkan WordPress di Docker menggunakan Ansible

Setelah kami memiliki buku pedoman Ansible, jalankan buku pedoman:

docker deploy-wordpress.yml -l docker

Hasil yang diharapkan:

Periksa apakah container berjalan dan WordPress dapat diakses melalui browser:

Ringkasan

Untuk meringkas artikel – kami berhasil menerapkan WordPress di Docker menggunakan Ansible dan dengan itu kami telah mengotomatiskan proses penerapan WordPress di Docker. Meskipun lingkungan Ansible diperlukan untuk mengatur dengan modul Python dan Python Docker agar proses ini berhasil. Setelah itu kami menulis dan menjalankan playbook Ansible yang menyebarkan WordPress dengan database dan juga memiliki persistensi data sehingga data dan file tidak disimpan dalam wadah Docker.

Terima kasih atas waktunya…


Docker
  1. Mesin Virtual Multipass dengan menggunakan Ansible

  2. Siapkan Nextcloud dengan Redis menggunakan Docker

  3. Terapkan WordPress di Docker menggunakan Ansible

  1. Terapkan Nextcloud di Docker menggunakan Ansible

  2. Cara Menginstal Docker menggunakan Ansible [Debian/Ubuntu]

  3. Cara menginstal WordPress menggunakan Docker

  1. Cara Menyebarkan Layanan Mikro dengan Docker

  2. Cara Menginstal Docker di CentOS

  3. Instal Docker dan WordPress Di Ubuntu