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

Panduan Docker:Menyebarkan Blog Hantu dengan MySQL dan Traefik dengan Docker

Ghost adalah platform penerbitan dan blog open source yang kuat berdasarkan nodejs. Ini dirancang dengan baik dan mudah digunakan. Platform hantu ditulis dalam JavaScript dan menggunakan node.js sebagai lingkungan runtime. Versi Ghost pertama dirilis pada tahun 2013 di bawah lisensi MIT..

Traefik adalah proxy terbalik HTTP modern dan penyeimbang beban untuk layanan mikro. Traefik membuat semua penerapan layanan mikro menjadi mudah, terintegrasi dengan komponen infrastruktur yang ada seperti Docker, Swarm Mode, Kubernetes, Amazon ECS, Rancher, Etcd, Consul, dll.

Dalam tutorial ini, kami akan menunjukkan langkah demi langkah cara menginstal dan mengkonfigurasi Ghost sebagai wadah Docker. Kami akan menginstal dan mengkonfigurasi Ghost di bawah versi Docker CE terbaru, menggunakan MySQL sebagai database dan menggunakan Traefik sebagai Reverse Proxy.

Prasyarat

  • Ubuntu 18.04 LTS
  • Hak istimewa root

Apa yang akan kami lakukan

  1. Instal Docker CE di Ubuntu 18.04 LTS
  2. Siapkan Docker untuk Pengguna Non-root
  3. Instal Docker Compose
  4. Konfigurasikan Tumpukan Hantu
    • Buat Jaringan Khusus
    • Buat Direktori Proyek
    • Membuat dan Mengonfigurasi Penampung MySQL
    • Membuat dan Mengonfigurasi Traefik Reverse Proxy
    • Membuat dan Mengonfigurasi Wadah Hantu
  5. Menyebarkan Ghost dengan MySQL dan Traefik
  6. Pengujian

Langkah 1 - Instal Docker CE di Ubuntu 18.04 LTS

Langkah pertama yang akan kita lakukan dalam tutorial ini adalah menginstal versi sistem docker-ce terbaru. Versi docker-ce dapat diinstal dari repositori resmi buruh pelabuhan.

Tambahkan kunci buruh pelabuhan dan repositori buruh pelabuhan.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Perintah akan secara otomatis memperbarui semua repositori di sistem.

Sekarang instal buruh pelabuhan menggunakan perintah apt di bawah ini.

sudo apt install docker-ce -y

Setelah penginstalan selesai, mulai layanan buruh pelabuhan dan aktifkan untuk diluncurkan setiap saat saat startup sistem.

systemctl start docker
systemctl enable docker

Versi docker-ce terbaru telah diinstal pada sistem Ubuntu 18.04.

Langkah 2 - Siapkan Docker untuk Pengguna Non-root

Dalam panduan ini, semua layanan mikro kontainer akan dijalankan di bawah pengguna normal/non-root. Jadi kita perlu mengonfigurasi pengguna agar dapat menjalankan wadah Docker dan menjalankan perintah sudo untuk hak akses root.

Buat pengguna baru bernama 'hakase' dan buat kata sandinya.

useradd -m -s /bin/bash hakase
passwd hakase

Sekarang tetapkan pengguna 'hakase' ke grup 'sudo' dan 'docker'.

usermod -a -G root hakase
usermod -a -G docker hakase

Dan restart layanan buruh pelabuhan.

systemctl restart docker

'hakase' sekarang dapat menjalankan wadah buruh pelabuhan dan menjalankan perintah sudo untuk hak akses root.

Login sebagai pengguna 'hakase' dan jalankan docker hello-world container.

su - hakase
docker run -it hello-world

Dan berikut adalah hasilnya.

Langkah 3 - Instal Docker Compose

Dalam tutorial ini, kita akan menginstal docker compose 1,21 dari file biner di repositori Github.

Unduh biner docker-compose ke direktori '/usr/local/bin'.

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Dan buat file 'docker-compose' dapat dieksekusi dengan mengubah izin file.

sudo chmod +x /usr/local/bin/docker-compose

Komposisi buruh pelabuhan telah diinstal - periksa menggunakan perintah di bawah ini.

docker-compose version
docker version

Docker-compose 1.21 dengan Docker-ce 1.18 telah diinstal.

Langkah 4 - Konfigurasikan Ghost Stack

Pada langkah ini, kita akan mengonfigurasi buruh pelabuhan dan membuat file komposisi buruh pelabuhan baru untuk instalasi ghost.

Kami akan membuat jaringan kustom buruh pelabuhan baru dan membuat file yml komposisi buruh pelabuhan baru yang berisi tiga layanan utama, termasuk database MySQL, proxy terbalik Traefik, dan blog Ghost itu sendiri.

Buat Jaringan Khusus

Tampilkan jaringan buruh pelabuhan yang tersedia menggunakan perintah jaringan buruh pelabuhan di bawah ini.

docker network ls

Buat jaringan buruh pelabuhan kustom baru untuk proxy terbalik traefik bernama 'traefiknet'.

docker network create traefiknet

Sekarang periksa kembali jaringan yang tersedia pada sistem buruh pelabuhan.

docker network ls

Jaringan kustom untuk Treafik bernama 'traefiknet' telah dibuat.

Buat Direktori Proyek

Setelah membuat jaringan kustom buruh pelabuhan, kita akan membuat direktori proyek baru bernama 'ghost' dan membuat file docker-compose.yml baru.

Masuk ke pengguna 'hakase'.

su - hakase

Buat direktori 'hantu' baru dan ubah direktori kerja menjadi direktori tersebut.

mkdir ghost/
cd ghost/

Dan buat file komposisi buruh pelabuhan baru.

touch docker-compose.yml

Membuat dan Mengonfigurasi Layanan MySQL

MySQL adalah layanan pertama yang ingin kami buat, dan kami ingin membuat wadah MySQL dengan konfigurasi di bawah ini.

  • Kami akan menggunakan image buruh pelabuhan MySQL 5.7.
  • Pasang direktori data MySQL ke direktori host buruh pelabuhan lokal.
  • Menjalankan layanan MySQL di jaringan internal lokal.
  • Konfigurasikan pengguna dan kata sandi MySQL.
    • Kata sandi root MySQL:kata sandi saya
    • Database untuk ghost bernama 'ghostdb' dengan user 'ghost' dan password 'ghostdbpass'
  • Kontainer MySQL akan diberi nama 'mysql'.

Di dalam direktori 'ghost', buat direktori baru bernama 'data' dan edit file 'docker-compose.yml'.

mkdir -p data/
vim docker-compose.yml

Tempelkan konfigurasi di bawah ini.

version: '3.3'

services:

  mysql:
    image: mysql:5.7
    restart: always
    volumes:
      - ./data:/var/lib/mysql
    labels:
      - "traefik.enable=false"
    networks:
      - internal
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghostdbpass
      MYSQL_DATABASE: ghostdb
    container_name: mysql

Simpan dan keluar.

Membuat dan Mengonfigurasi Proksi Terbalik Traefik

Setelah membuat layanan MySQL, kami akan membuat dan mengkonfigurasi wadah traefik reverse proxy.

Sebelum mengedit script 'docker-compose.yml', kita perlu membuat konfigurasi traefik baru bernama 'traefik.toml'.

vim traefik.toml

Tempel konfigurasi aturan traefik di bawah ini.

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
    users = [
        "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
    ]

[api]
entrypoint="dash"
dashboard = true

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

Simpan dan keluar.

Sekarang kita perlu membuat file baru untuk konfigurasi SSL Letsencrypt 'acme.json'. Ini digunakan untuk menyimpan semua letsencrypt yang menghasilkan log.

Buat file 'acme.json' kosong dan ubah izin menjadi 600.

touch acme.json
chmod 600 acme.json

Selanjutnya, kita akan mengedit script 'docker-compose.yml' dan menambahkan konfigurasi layanan traefik.

  • Kami akan menggunakan image traefik docker terbaru.
  • Kontainer akan diberi nama 'traefik'
  • Ini menggunakan 'traefiknet' jaringan khusus, dan mengekspos port HTTP dan HTTPS.
  • Pasang file docker sock dan konfigurasi traefik 'traefik.toml' dan 'acme.json'
  • Kami mendefinisikan URL dasbor traefik dan backend melalui label buruh pelabuhan.

Edit 'docker-compose.yml'.

vim docker-compose.yml

Rekatkan konfigurasi layanan traefik di bawah ini.

  traefik:
    image: traefik:latest
    command: --docker
    ports:
      - 80:80
      - 443:443
    labels:
      - "traefik.enable=true"
      - "traefik.backend=dashboard"
      - "traefik.frontend.rule=Host:traef.hakase-labs.io"
      - "traefik.port=8080"
    networks:
      - traefiknet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    container_name: traefik
    restart: always

Simpan dan keluar.

Membuat dan Mengonfigurasi Layanan Hantu

Setelah mengkonfigurasi traefik reverse proxy, kita akan membuat konfigurasi utama layanan ghost.

Detail konfigurasi yang ingin kita buat.

  • Kami akan menggunakan ghost v1 dan versi alpine buruh pelabuhan kecil.
  • Kami akan memasang direktori konten hantu ke direktori lokal bernama 'blog'.
  • Layanan ghost akan berjalan pada port default dengan nama domain 'gho.hakase-labs.io', konfigurasi melalui label buruh pelabuhan.
  • Layanan hantu akan menggunakan dua jaringan buruh pelabuhan, internal dan traefiknet.
  • Kami sedang mengonfigurasi detail database MySQL dari konfigurasi wadah mysql.
  • Dan hantu akan dimulai ketika traefik dan wadah MySQL aktif dan berjalan.

Buat direktori baru bernama 'blog' dan edit file 'docker-compose.yml'.

mkdir -p blog/
vim docker-compose.yml

Tempelkan konfigurasi di bawah ini.

  ghost:
    image: ghost:1-alpine
    restart: always
    ports:
      - 2368
    volumes:
      - ./blog:/var/lib/ghost/content
    labels:
      - "traefik.enabled=true"
      - "traefik.backend=ghost"
      - "traefik.frontend.rule=Host:gho.hakase-labs.io"
      - "traefik.docker.network=traefiknet"
      - "traefik.port=2368"
    networks:
      - internal
      - traefiknet
    environment:
      database__client: mysql
      database__connection__host: mysql
      database__connection__user: ghost
      database__connection__password: ghostdbpass
      database__connection__database: ghostdb
    container_name: ghost
    depends_on:
      - mysql
      - traefik

networks: traefiknet: external: true internal: external: false

Simpan dan keluar.

Dan sekarang kita mendapatkan semua direktori dan konfigurasi seperti yang ditunjukkan di bawah ini.

tree

Langkah 5 - Terapkan Ghost dengan MySQL dan Traefik

Untuk membangun dan menjalankan semua layanan ghost stack, kita dapat menggunakan perintah di bawah ini.

docker-compose up -d

Jika sudah selesai, centang semua layanan yang sedang berjalan.

docker-compose ps

Dan berikut adalah hasilnya.

Jika Anda memiliki kesalahan, periksa log penampung menggunakan perintah di bawah ini.

docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost

Tumpukan hantu dengan MySQL dan proxy terbalik Traefik aktif dan berjalan.

Langkah 6 - Pengujian

Buka dasbor Traefik dengan URL-nya, milik saya adalah http://traef.hakase-labs.io/

Masuk dengan pengguna dan kata sandi pada file 'traefik.toml'.

Dan berikut adalah dashboard Traefik.

Untuk instalasi Ghost, ketik URL ghost di bilah alamat, milik saya adalah http://gho.hakase-labs.io/

Dan Anda akan mendapatkan halaman beranda hantu.

Sekarang kunjungi halaman admin untuk mengatur dan mengkonfigurasi pengguna admin baru. URL saya adalah: http://gho.hakase-labs.io/admin/

Klik tombol hijau untuk membuat pengguna admin baru.

Ketik detail pengguna, kata sandi, email, dan klik lagi tombol hijau.

Untuk mengundang anggota atau pengguna baru, klik tautan 'Saya akan melakukannya nanti..'.

Sekarang Anda akan mendapatkan Dasbor Hantu.

Dan setelah membuat contoh postingan, berikut adalah hasilnya.

Instalasi blog hantu dengan database MySQL dan Traefik Reverse Proxy di lingkungan Docker telah berhasil diselesaikan.

Referensi

  • https://hub.docker.com/_/ghost/
  • https://docs.traefik.io/

Docker
  1. Cara Menginstal Perangkat Lunak Blog Hantu dengan Apache dan SSL di Ubuntu 16.04

  2. Cara Menginstal WordPress dengan Docker, Panduan yang Mudah Diikuti

  3. Cara Menjalankan MySQL di Docker Container:Panduan Sederhana dan Mudah Diikuti

  1. Menjalankan PostgreSQL di Docker, Panduan Cepat dan Praktis

  2. Cara menginstal dan menghosting server OpenVPN dengan Docker

  3. 7 Tips Berguna untuk Menghosting Sendiri Instance Hantu Dengan Docker

  1. Panduan Acara dan Penjadwal Acara MySQL

  2. Cara Menyebarkan dan Mengelola MongoDB dengan Docker

  3. Panduan Fungsi Tanggal MySQL dengan Contoh