Menjalankan Docker di Server Production (Digital Ocean)

Prasyarat
Untuk mengikuti artikel ini, Anda perlu:

Akses ke mesin lokal Ubuntu 20.04 atau server pengembangan sebagai pengguna non-root dengan hak sudo. Jika Anda menggunakan server jarak jauh, disarankan untuk menginstal firewall aktif. Untuk mengatur ini, silakan merujuk ke Panduan Pengaturan Server Awal kami untuk Ubuntu 20.04 .
Docker diinstal di server atau mesin lokal Anda, mengikuti Langkah 1 dan 2 dari Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04 .
Langkah 1 — Memasang Docker Compose
Untuk memastikan kami mendapatkan versi stabil terbaru dari Docker Compose, kami akan mengunduh perangkat lunak ini dari repositori Github resminya .

Pertama, konfirmasikan versi terbaru yang tersedia di halaman rilis mereka . Pada saat penulisan ini, versi stabil terbaru adalah 1.27.4.

Perintah berikut akan mengunduh 1.27.4rilis dan menyimpan file yang dapat dieksekusi di /usr/local/bin/docker-compose, yang akan membuat perangkat lunak ini dapat diakses secara global sebagai docker-compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
Selanjutnya, atur izin yang benar sehingga docker-composeperintah dapat dieksekusi:

sudo chmod +x /usr/local/bin/docker-compose
 
Untuk memverifikasi bahwa instalasi berhasil, Anda dapat menjalankan:

docker-compose --version
 
Anda akan melihat output yang mirip dengan ini:

Output
docker-compose version 1.27.4, build 40524192
Docker Compose sekarang berhasil diinstal pada sistem Anda. Di bagian berikutnya, kita akan melihat cara menyiapkan docker-compose.ymlfile dan menjalankan lingkungan kemas dengan alat ini.

Langkah 2 — Menyiapkan docker-compose.ymlFile
Untuk mendemonstrasikan cara menyiapkan docker-compose.ymlfile dan bekerja dengan Docker Compose, kami akan membuat lingkungan server web menggunakan gambar Nginx resmi dari Docker Hub , registri Docker publik. Lingkungan kemas ini akan menyajikan satu file HTML statis.

Mulailah dengan membuat direktori baru di folder rumah Anda, lalu pindah ke dalamnya:

mkdir ~/compose-demo
cd ~/compose-demo
 
Di direktori ini, siapkan folder aplikasi untuk dijadikan sebagai root dokumen untuk lingkungan Nginx Anda:

mkdir app
 
Menggunakan editor teks pilihan Anda, buat index.htmlfile baru di dalam appfolder:

nano app/index.html
 
Tempatkan konten berikut ke dalam file ini:

~/compose-demo/app/index.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>
 
Simpan dan tutup file setelah selesai. Jika Anda menggunakan nano, Anda dapat melakukannya dengan mengetik CTRL+X, lalu Ydan ENTERuntuk mengonfirmasi.

Selanjutnya, buat docker-compose.ymlfile:

nano docker-compose.yml
 
Masukkan konten berikut di docker-compose.ymlfile Anda :

docker-compose.yml
version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html
 
The docker-compose.ymlberkas biasanya dimulai dengan versiondefinisi. Ini akan memberi tahu Docker Compose versi konfigurasi mana yang kami gunakan.

Kami kemudian memiliki servicesblok, di mana kami mengatur layanan yang merupakan bagian dari lingkungan ini. Dalam kasus kami, kami memiliki satu layanan yang disebut web. Layanan ini menggunakan nginx:alpinegambar dan mengatur pengalihan port dengan portsarahan. Semua permintaan pada port 8000dari tuan rumah mesin (sistem dari mana Anda menjalankan Docker Compose) akan diarahkan ke webkontainer di pelabuhan 80, di mana Nginx akan berjalan.

The volumesdirektif akan membuat volume yang dibagi antara mesin host dan wadah. Ini akan membagikan appfolder lokal dengan wadah, dan volume akan ditempatkan di /usr/share/nginx/htmldalam wadah, yang kemudian akan menimpa root dokumen default untuk Nginx.

Simpan dan tutup file.

Kami telah menyiapkan halaman demo dan docker-compose.ymlfile untuk membuat lingkungan server web kemas yang akan melayaninya. Pada langkah berikutnya, kami akan membawa lingkungan ini dengan Docker Compose.

Langkah 3 — Menjalankan Docker Compose
Dengan docker-compose.ymlfile di tempat, kita sekarang dapat menjalankan Docker Compose untuk meningkatkan lingkungan kita. Perintah berikut akan mengunduh gambar Docker yang diperlukan, membuat wadah untuk weblayanan, dan menjalankan lingkungan dalam wadah dalam mode latar belakang:

docker-compose up -d
 
Docker Compose pertama-tama akan mencari gambar yang ditentukan di sistem lokal Anda, dan jika tidak dapat menemukan gambar, itu akan mengunduh gambar dari Docker Hub. Anda akan melihat output seperti ini:

Output
Creating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done
Lingkungan Anda sekarang aktif dan berjalan di latar belakang. Untuk memverifikasi bahwa penampung aktif, Anda dapat menjalankan:

docker-compose ps
 
Perintah ini akan menunjukkan kepada Anda informasi tentang container yang sedang berjalan dan statusnya, serta pengalihan port apa pun yang saat ini ada:

Output
       Name Command State Ports        
----------------------------------------------------------------------------------
compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp
Anda sekarang dapat mengakses aplikasi demo dengan mengarahkan browser Anda ke localhost:8000apakah Anda menjalankan demo ini di komputer lokal Anda, atau your_server_domain_or_IP:8000jika Anda menjalankan demo ini di server jauh.

Anda akan melihat halaman seperti ini:

Halaman Demo Tulis Docker

Karena volume bersama yang telah Anda siapkan di dalam docker-compose.ymlfile membuat appfile folder Anda tetap sinkron dengan root dokumen penampung. Jika Anda membuat perubahan apa pun pada index.htmlfile, mereka akan secara otomatis diambil oleh wadah dan dengan demikian tercermin di browser Anda saat Anda memuat ulang halaman.

Pada langkah berikutnya, Anda akan melihat cara mengelola lingkungan kemas dengan perintah Docker Compose.

Langkah 4 — Mengenal Docker Compose Commands
Anda telah melihat cara menyiapkan docker-compose.ymlfile dan menghidupkan lingkungan Anda dengan docker-compose up. Sekarang Anda akan melihat cara menggunakan perintah Docker Compose untuk mengelola dan berinteraksi dengan lingkungan kemas Anda.

Untuk memeriksa log yang dihasilkan oleh wadah Nginx Anda, Anda dapat menggunakan logsperintah:

docker-compose logs
 
Anda akan melihat output yang mirip dengan ini:

Output
Attaching to compose-demo_web_1
web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"
Jika Anda ingin menjeda eksekusi lingkungan tanpa mengubah status wadah Anda saat ini, Anda dapat menggunakan:

docker-compose pause
 
Output
Pausing compose-demo_web_1 ... done
Untuk melanjutkan eksekusi setelah mengeluarkan jeda:

docker-compose unpause
 
Output
Unpausing compose-demo_web_1 ... done
The stopperintah akan mengakhiri eksekusi kontainer, tetapi tidak akan menghancurkan data yang terkait dengan kontainer Anda:

docker-compose stop
 
Output
Stopping compose-demo_web_1 ... done
Jika Anda ingin menghapus container, jaringan, dan volume yang terkait dengan lingkungan container ini, gunakan downperintah:

docker-compose down
 
Output
Removing compose-demo_web_1 ... done
Removing network compose-demo_default
Perhatikan bahwa ini tidak akan menghapus gambar dasar yang digunakan oleh Docker Compose untuk meningkatkan lingkungan Anda (dalam kasus kami, nginx:alpine). Dengan cara ini, setiap kali Anda menghidupkan kembali lingkungan Anda dengan docker-compose up, prosesnya akan jauh lebih cepat karena gambar sudah ada di sistem Anda.

Jika Anda juga ingin menghapus gambar dasar dari sistem Anda, Anda dapat menggunakan:

docker image rm nginx:alpine
 
Output
Untagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a
Catatan : Silakan merujuk ke panduan kami tentang Cara Menginstal dan Menggunakan Docker untuk referensi lebih rinci tentang perintah Docker.

Kesimpulan
Dalam panduan ini, kita telah melihat cara menginstal Docker Compose dan menyiapkan lingkungan kemas berdasarkan citra server web Nginx. Kami juga telah melihat bagaimana mengelola lingkungan ini menggunakan perintah Compose

0 komentar:

Posting Komentar