- Setiap stack menyimpan file compose.yaml, variabel, jaringan, dan volume di dalam sebuah folder.
- Layanan-layanan tersebut berbagi jaringan dan lokasinya ditentukan menggunakan nama internal masing-masing.
- Volume tetap menyimpan data meskipun kontainer dibuat ulang atau diperbarui.
- Pemeriksaan kesehatan mencegah aplikasi berjalan sebelum basis datanya merespons.
Setelah Dockge terinstal, Anda dapat menggunakan dasbornya untuk menyebarkan aplikasi yang terdiri dari satu atau lebih kontainer tanpa harus terus-menerus mengetik perintah di terminal. Setiap aplikasi dikelola sebagai sebuah kontainer. Tumpukan Docker Compose, dengan layanan, variabel, jaringan, dan volume yang disatukan dalam satu proyek.
Ini sangat berguna terutama ketika sebuah aplikasi membutuhkan banyak komponen untuk bekerja bersama. Misalnya, layanan seperti Gitea mungkin memerlukan satu kontainer untuk aplikasi dan kontainer lain untuk PostgreSQL. Dockge memungkinkan Anda untuk mengedit konfigurasi, memulai perakitan, meninjau log-nya, dan memperbarui image dari satu antarmuka tunggal.
Panduan ini mengasumsikan bahwa Docker dan Dockge sudah terpasang dan berjalan. Jika Anda belum menyiapkan dasbor Anda, Anda harus terlebih dahulu... Instal Docker dengan Docker Compose dan konfigurasikan folder stacks Anda dengan benar.
Apa yang Dockge anggap sebagai tumpukan (stack)?

Di Dockge, stack pada dasarnya adalah sebuah Proyek Docker ComposeBiasanya terdiri dari sebuah folder yang berisi sebuah file. compose.yaml dan, secara opsional, sebuah file. .env, konfigurasi tambahan, sertifikat, atau direktori yang digunakan sebagai volume.
Dengan pengaturan default, Dockge menyimpan proyek mengikuti struktur ini:
/opt/stacks/
├── gitea/
│ ├── compose.yaml
│ └── .env
├── stirling-pdf/
│ └── compose.yaml
└── vaultwarden/
├── compose.yaml
└── .env
Setiap subfolder mewakili tumpukan independen. Struktur berbasis file ini memungkinkan Anda untuk mengelola proyek yang sama dari Docker atau menggunakan perintah tradisional seperti docker compose up, docker compose down y docker compose logs.
Konsep ini tidak boleh disamakan dengan Docker Swarm stacks. Dockge menggunakan Docker Compose dan Hal ini tidak mengubah server menjadi cluster.Elemen-elemen seperti node manajer dan pekerja, Routing Mesh, layanan global, atau perintah docker stack deploy Mereka tergabung dalam Swarm dan tidak terlibat dalam prosedur ini.
Meskipun Dockge dapat terhubung ke host yang berbeda menggunakan agen, setiap stack tetap berjalan sebagai proyek Compose pada host yang bersangkutan.
Yang Anda butuhkan sebelum membuat stack
Sebelum menyebarkan aplikasi, ada baiknya mengumpulkan data yang dibutuhkan oleh file Compose Anda:
- La gambar resmi dari setiap layanan dan label yang ingin Anda gunakan.
- Port host yang akan tersedia.
- Folder atau volume tempat data akan disimpan.
- Variabel lingkungan yang dibutuhkan oleh aplikasi.
- Kredensial basis data dan layanan internal lainnya.
- Izin yang diperlukan untuk mengakses direktori yang dipasang.
Anda juga perlu memutuskan layanan mana yang memerlukan akses eksternal. Misalnya, basis data yang hanya digunakan oleh satu aplikasi lain dalam tumpukan aplikasi tersebut. Anda tidak perlu mempublikasikan port Anda. pada host. Kontainer dapat berkomunikasi langsung melalui jaringan internal yang dibuat oleh Compose.
Untuk berlatih dengan aplikasi layanan tunggal sebelum membuat proyek yang lebih kompleks, Anda dapat Instal Stirling PDF dengan Docker dan mengelolanya nanti dari Dockge.
Cara membuat stack baru di Docker

Akses panel Dockge dan tekan tombol kontrol untuk buat tumpukan baruMasukkan nama yang singkat dan mudah dikenali, sebaiknya terdiri dari huruf kecil, angka, dan tanda hubung, tanpa spasi atau karakter khusus.
Misalnya:
gitea
Dockge akan membuat folder untuk proyek di dalam direktori yang dikonfigurasi untuk stack. Di editor utama, Anda dapat mengetik atau menempelkan isi dari compose.yaml.
Contoh berikut membuat server Gitea yang disertai dengan basis data PostgreSQL:
services:
db:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 10s
timeout: 5s
retries: 5
gitea:
image: docker.gitea.com/gitea:1-rootless
restart: unless-stopped
environment:
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: db:5432
GITEA__database__NAME: ${POSTGRES_DB}
GITEA__database__USER: ${POSTGRES_USER}
GITEA__database__PASSWD: ${POSTGRES_PASSWORD}
ports:
- "${GITEA_HTTP_PORT:-3000}:3000"
- "${GITEA_SSH_PORT:-2222}:2222"
volumes:
- gitea_data:/var/lib/gitea
- gitea_config:/etc/gitea
depends_on:
db:
condition: service_healthy
volumes:
db_data:
gitea_data:
gitea_config:
Versi Docker Compose saat ini mengikuti Susun SpesifikasiOleh karena itu, tidak perlu lagi memulai file dengan properti seperti version: "3"Compose secara otomatis menggunakan skema terbaru yang dikenalinya.
Cara mengkonfigurasi variabel lingkungan
Contoh sebelumnya menggunakan referensi seperti ${POSTGRES_PASSWORD}Nilai-nilai ini harus didefinisikan dalam sebuah file. .env terletak di folder tumpukan yang sama.
Sebagai contoh untuk Gitea, kontennya bisa berupa:
POSTGRES_DB=gitea
POSTGRES_USER=gitea
POSTGRES_PASSWORD=CAMBIA_ESTA_CONTRASENA
GITEA_HTTP_PORT=3000
GITEA_SSH_PORT=2222
Ganti kata sandi contoh dengan kata sandi acak yang panjang. File tersebut .env Hal ini mempermudah penggunaan kembali Compose, tetapi Ini tidak mengenkripsi rahasia.Anda harus membatasi izinnya, mengecualikannya dari repositori Git, dan menghindari membagikannya bersama dengan tangkapan layar atau salinan publik proyek tersebut.
Untuk lingkungan yang lebih menuntut, Docker Compose mendukung rahasia yang dipasang sebagai file di dalam kontainer. Baik PostgreSQL maupun Gitea memungkinkan pembacaan kata sandi dari file, mencegahnya muncul langsung di antara variabel layanan.
Docker memiliki akses ke soket Docker untuk mengelola kontainer. Karena alasan ini, hanya administrator tepercaya yang boleh mengakses dasbor. Anda juga harus menghindari menyalin konfigurasi Compose dari sumber yang tidak dikenal: konfigurasi tersebut dapat memasang folder sensitif pada host atau meminta hak akses yang lebih tinggi.
Cara kerja jaringan dan nama layanan

Docker Compose secara otomatis membuat jaringan default untuk setiap proyekSemua layanan yang terhubung dengannya dapat ditemukan menggunakan nama yang digunakan di compose.yaml.
Dalam contoh ini, Gitea terhubung ke PostgreSQL menggunakan:
db:5432
db Ini adalah nama layanan, bukan alamat IP tetap. Docker mempertahankan resolusi internal ini bahkan jika kontainer dibuat ulang dan menerima alamat yang berbeda.
Anda sebaiknya tidak menggunakan localhost untuk menghubungkan dua kontainer. Di dalam kontainer Gitea, localhost Ini merujuk pada Gitea itu sendiri, bukan pada kontainer PostgreSQL.
Selain itu, tidak perlu mempublikasikan port database 5432 jika hanya Gitea yang perlu terhubung ke port tersebut. Dengan tidak mengeksposnya di bagian tersebut. portsAnda mengurangi potensi kerentanan server.
Cara menyimpan data tumpukan
Kontainer dapat diganti. Jika Anda hanya menyimpan informasi di dalam sistem file internalnya, Anda mungkin akan kehilangan informasi tersebut saat membuatnya ulang. Untuk menghindari hal ini, contoh tersebut mendeklarasikan tiga kontainer. volume persisten:
db_dataSistem ini tetap menggunakan basis data PostgreSQL.gitea_dataIni menyimpan repositori dan data Gitea.gitea_configIni mempertahankan pengaturan aplikasi.
Menghentikan atau membuat ulang stack tidak secara otomatis menghapus volume-volume ini. Namun, volume-volume tersebut tetap berada di server yang sama, jadi... Mereka tidak menggantikan cadangan..
Anda juga dapat menggunakan bind mount untuk menyimpan file di jalur tertentu pada host. Dalam hal ini, pastikan folder tersebut ada dan pengguna yang menjalankan container memiliki izin yang cukup untuk membaca atau menulis ke folder tersebut.
Mengapa menggunakan healthchecks dan depends_on?
Properti depends_on Ini menetapkan urutan di mana Compose membuat layanan, tetapi memulai sebuah kontainer tidak berarti bahwa aplikasi yang dihosting di dalamnya sudah siap.
PostgreSQL mungkin membutuhkan beberapa detik untuk menginisialisasi basis data. Jika Gitea mencoba terhubung terlalu cepat, mungkin akan menampilkan kesalahan meskipun kedua kontainer sedang berjalan.
El healthcheck Contoh tersebut dijalankan secara berkala. pg_isreadyKondisi service_healthy Hal ini menyebabkan Compose menunggu hingga PostgreSQL merespons dengan sukses sebelum memulai Gitea. Kombinasi ini sangat berguna dalam tumpukan teknologi yang mencakup... basis data, antrian, atau layanan penyimpanan.
Cara memulai dan memeriksa stack
Setelah menyelesaikan file Compose dan variabel, simpan perubahan dan jalankan stack dari Docker. Dasbor akan menampilkan unduhan image secara real-time, pembuatan volume, dan proses startup kontainer.
Pastikan PostgreSQL tampak sehat dan Gitea tetap berjalan. Kemudian buka:
http://IP_DEL_SERVIDOR:3000
Anda juga dapat memeriksa proyek tersebut dari terminal:
cd /opt/stacks/gitea
docker compose config
docker compose ps
docker compose logs --tail=100
docker compose config Ini menampilkan konfigurasi akhir setelah variabel diselesaikan. Hal ini sangat berguna untuk menemukan kesalahan sintaks, nilai kosong, atau substitusi yang tidak terduga sebelum memulai layanan.
Saat Anda perlu memperbarui gambar, Anda dapat memperbarui kontainer Docker menggunakan DockerSebelum melakukan peningkatan besar, cadangkan volume Anda dan tinjau perubahan versinya.
Cara mengimpor stack yang sudah ada ke Docker.
Dockge juga dapat mengelola proyek Compose yang telah dibuat sebelumnya dari terminal. Prosedur yang disarankan adalah:
- Hentikan proyek yang sedang berjalan untuk menghindari duplikasi.
- Buat subfolder di dalam direktori stacks.
- Pindahkan file tersebut ke sana dengan nama...
compose.yaml. - Salin juga file Anda.
.envdan berkas-berkas tambahan. - Gunakan opsi Pindai Tumpukan Folder dari Dockge.
- Periksa konfigurasi sebelum memulai ulang proyek.
Misalnya:
/opt/stacks/mi-aplicacion/compose.yaml
Jika Anda mengkonfigurasi folder yang berbeda untuk /opt/stacksIngat bahwa rute yang diatur di dalam kontainer Docker haruslah... identik dengan jalur absolut hostRute yang berbeda dapat menyebabkan bind mount relatif mengarah ke lokasi yang salah.
Kesalahan umum saat membuat stack di Docker

File YAML tidak valid
YAML mengandalkan indentasi dan tidak mendukung tab sebagai pengganti spasi. Perhatikan bagian-bagiannya secara khusus. services, volumes y environment. Berlari docker compose config untuk menemukan jalur yang bermasalah.
Pesan kesalahan "Port sudah dialokasikan" muncul.
Kontainer atau layanan lain menggunakan port host yang sama. Ubah saja nilai di sebelah kiri pemetaan. Misalnya, ganti 3000:3000 oleh 3001:3000.
Variabel-variabel tersebut tampak kosong.
Pastikan nama file sudah tepat. .envbahwa file tersebut berada di dalam folder stack dan bahwa nama-nama tersebut sesuai dengan yang digunakan di compose.yamlPeriksa hasil dari docker compose config tanpa membagikan hasilnya jika berisi rahasia.
Aplikasi tidak dapat menemukan basis data.
Gunakan nama layanan sebagai nama host. Dalam contoh ini, seharusnya digunakan db, TIDAK localhost juga bukan alamat IP yang ditetapkan secara manual. Pastikan juga kedua layanan tersebut menggunakan jaringan yang sama.
Aplikasi dimulai sebelum PostgreSQL.
depends_on Tanpa pemeriksaan kesehatan, ini hanya mengontrol urutan pembuatan. Tambahkan healthcheck ke basis data dan menggunakan kondisi tersebut service_healthy.
Pesan "Izin ditolak" muncul saat memasang folder.
Verifikasi bahwa jalur tersebut ada di host, bahwa jalur tersebut absolut jika sesuai, dan bahwa izinnya memungkinkan akses untuk pengguna internal kontainer. Jangan memberikan izin tulis global sebagai solusi permanen.
Tumpukan tersebut tidak muncul di Dockge.
Periksa apakah file tersebut terletak langsung di dalam struktur seperti ini /opt/stacks/nombre/compose.yamlKemudian jalankan Pindai Tumpukan FolderProyek yang disimpan di luar folder yang telah dikonfigurasi tidak akan muncul secara otomatis.
Kontainer tersebut terus-menerus memasuki status memulai ulang.
Buka log dari Docker atau jalankan docker compose logsPenyebab paling umum adalah kredensial yang salah, variabel yang dibutuhkan hilang, izin yang tidak mencukupi, atau dependensi yang belum tersedia.
Membuat Docker stack melibatkan pendefinisian aplikasi menggunakan Docker Compose, menyimpan variabel dan data persistennya, serta menyebarkannya dari antarmuka visual. Kuncinya adalah menggunakan nama layanan untuk komunikasi internal, hanya mengekspos port yang diperlukan, dan memeriksa ketersediaan dependensi menggunakan healthcheck.
Dockge menyederhanakan administrasi, tetapi proyek tetap menggunakan file Compose standar. Hal ini memungkinkan Anda untuk mempertahankan kendali atas konfigurasi, menggunakan baris perintah bila diperlukan, dan memigrasikan tumpukan ke server lain tanpa bergantung pada basis data khusus.
Indeks
- 1 Apa yang Dockge anggap sebagai tumpukan (stack)?
- 2 Yang Anda butuhkan sebelum membuat stack
- 3 Cara membuat stack baru di Docker
- 4 Cara mengkonfigurasi variabel lingkungan
- 5 Cara kerja jaringan dan nama layanan
- 6 Cara menyimpan data tumpukan
- 7 Mengapa menggunakan healthchecks dan depends_on?
- 8 Cara memulai dan memeriksa stack
- 9 Cara mengimpor stack yang sudah ada ke Docker.
- 10 Kesalahan umum saat membuat stack di Docker
- 10.1 File YAML tidak valid
- 10.2 Pesan kesalahan "Port sudah dialokasikan" muncul.
- 10.3 Variabel-variabel tersebut tampak kosong.
- 10.4 Aplikasi tidak dapat menemukan basis data.
- 10.5 Aplikasi dimulai sebelum PostgreSQL.
- 10.6 Pesan "Izin ditolak" muncul saat memasang folder.
- 10.7 Tumpukan tersebut tidak muncul di Dockge.
- 10.8 Kontainer tersebut terus-menerus memasuki status memulai ulang.
Saya seorang penggila teknologi yang telah mengubah minat "geek"-nya menjadi sebuah profesi. Saya telah menghabiskan lebih dari 10 tahun hidup saya menggunakan teknologi mutakhir dan mengutak-atik semua jenis program hanya karena rasa ingin tahu. Sekarang saya memiliki spesialisasi dalam teknologi komputer dan video game. Hal ini karena selama lebih dari 5 tahun saya telah menulis untuk berbagai website tentang teknologi dan video game, membuat artikel yang berupaya memberikan informasi yang Anda butuhkan dalam bahasa yang dapat dimengerti oleh semua orang.
Jika Anda memiliki pertanyaan, pengetahuan saya berkisar dari segala sesuatu yang berhubungan dengan sistem operasi Windows serta Android untuk ponsel. Dan komitmen saya adalah kepada Anda, saya selalu bersedia meluangkan beberapa menit dan membantu Anda menyelesaikan pertanyaan apa pun yang mungkin Anda miliki di dunia internet ini.