Deploy Lucee dengan Docker: Panduan Lengkap
Deploy Lucee dengan Docker: imej rasmi lucee/lucee, docker compose dengan MySQL, volume berterusan, pemboleh ubah persekitaran dan amalan keselamatan.

Kandungan
- Deploy Lucee dengan Docker: Panduan Lengkap
- Mengapa Gunakan Docker untuk Lucee
- Imej Rasmi Lucee dan Cara Tag Berfungsi
- Menjalankan Bekas Pertama
- Docker Compose: Lucee dan MySQL
- Isipadu Berterusan: Webroot dan Konfigurasi
- Pemboleh Ubah Persekitaran
- Had Memori dan Pemproses
- Menyimpan Konfigurasi Supaya Tidak Hilang
- Aliran Deploy dan Naik Taraf yang Selamat
- Amalan Keselamatan: Bekas Tanpa Root
- Soalan Lazim (FAQ)
- Sumber
Deploy Lucee dengan Docker: Panduan Lengkap
Penulis: Thalhah · Tarikh: 16 Oktober 2026
Deploy Lucee dengan Docker bermaksud menjalankan enjin CFML di dalam bekas menggunakan imej rasmi lucee/lucee, yang dibina di atas Apache Tomcat dan membundel Java serta Tomcat bersama. Dengan Docker Compose anda boleh membawa Lucee dan MySQL dalam satu fail konfigurasi, memetakan webroot dan konfigurasi sebagai isipadu berterusan, supaya deploy konsisten di mana-mana persekitaran. Artikel ini merangkumi imej rasmi, contoh docker compose, pemboleh ubah persekitaran, dan amalan keselamatan.
Mengapa Gunakan Docker untuk Lucee
Docker membungkus Lucee bersama semua kebergantungannya supaya aplikasi berjalan sama di mesin pembangun, pelayan ujian dan pengeluaran. Dokumentasi rasmi menyenaraikan empat manfaat utama: konsistensi, kebolehskalaan, kecekapan sumber dan pengasingan. Bekas berkongsi kernel hos, jadi ia lebih ringan daripada mesin maya, dan aplikasi berbeza pada hos yang sama tidak berkonflik.
Imej Rasmi Lucee dan Cara Tag Berfungsi
Imej rasmi tersedia di Docker Hub sebagai lucee/lucee, dibina di atas imej Tomcat Docker. Tag mengikut konvensyen penamaan ini:
LUCEE_VERSION[-RELEASE_TYPE][-light][-nginx][-TOMCAT_VERSION-JRE_VERSION]
Bahagian RELEASE_TYPE diisi SNAPSHOT, RC atau BETA untuk binaan bukan keluaran, dan diabaikan untuk keluaran rasmi. Akhiran -light ialah binaan dengan JAR Light Lucee tanpa sebarang sambungan, jadi anda perlu memasang pemacu pangkalan data dan ORM secara berasingan. Akhiran -nginx ialah binaan dengan pelayan web NGINX dibundel dan dikonfigurasi. Bahagian terakhir membolehkan anda memilih kombinasi Tomcat dan Java, contohnya tomcat9.0-jre21-temurin-jammy. Imej ini berasaskan imej Tomcat Docker yang menggunakan edaran Temurin (OpenJDK) di atas Ubuntu.
Siri 7.1 menggunakan Tomcat 11.0 dengan JDK 25 sebagai garis dasar, seperti yang kelihatan pada tag penuh binaan snapshot. Untuk pengeluaran, pilih tag versi tertentu dan bukannya latest supaya deploy anda boleh diulang dengan tepat.
Menjalankan Bekas Pertama
Cara paling cepat untuk melihat Lucee berjalan ialah menarik imej dan menjalankannya:
docker pull lucee/lucee:latest
docker run -d -p 8888:8888 lucee/lucee:latest
Arahan kedua menjalankan bekas secara latar belakang dan memetakan port 8888 bekas ke port 8888 hos. Buka http://localhost:8888 untuk melihat Lucee berjalan. Tomcat di dalam imej mendengar pada port 8888, dan varian NGINX mendengar pada port 80. Port 8080 didedahkan kepada bekas yang dipaut tetapi tidak digunakan, jadi anda mesti menerbitkan port 8888 untuk mengakses Tomcat.
Docker Compose: Lucee dan MySQL
Untuk aplikasi sebenar, gunakan Docker Compose untuk membawa Lucee dan pangkalan data bersama:
services:
lucee:
image: lucee/lucee:6.2
ports:
- "8888:8888"
volumes:
- ./www:/var/www
- ./config/lucee:/opt/lucee/web
environment:
LUCEE_JAVA_OPTS: "-Xms256m -Xmx1024m"
mysql:
image: mysql:8.0
environment:
MYSQL_DATABASE: myapp
MYSQL_USER: app_user
MYSQL_PASSWORD: tukar-kata-laluan-ini
MYSQL_ROOT_PASSWORD: tukar-juga-ini
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
Folder ./www pada mesin anda dipetakan ke /var/www di dalam bekas, iaitu webroot lalai. Folder ./config/lucee dipetakan ke /opt/lucee/web, lokasi konfigurasi Lucee untuk laman lalai. Untuk menyambungkan aplikasi CFML anda kepada MySQL, konfigurasikan datasource dengan hos mysql dan port 3306, seperti yang diterangkan dalam panduan konfigurasi datasource.
Isipadu Berterusan: Webroot dan Konfigurasi
Lokasi folder penting dalam imej ini adalah seperti berikut:
| Lokasi | Kandungan |
|---|---|
| /var/www | Webroot untuk laman lalai |
| /opt/lucee/web | Konfigurasi Lucee untuk laman lalai |
| /opt/lucee/server/lucee-server/context | Konteks pelayan Lucee |
| /usr/local/tomcat/conf | Konfigurasi Tomcat |
| /usr/local/tomcat/logs | Log Tomcat |
| /opt/lucee/web/logs | Log Lucee untuk laman lalai |
Mapkan folder yang perlu kekal sebagai isipadu bernama atau pemetaan fail hos. Satu nasihat prestasi penting daripada dokumentasi: elakkan menjadikan direktori di bawah lucee-server sebagai isipadu Docker, kerana overhead sistem fail hos akan merosot prestasi.
Pemboleh Ubah Persekitaran
Imej ini menyokong beberapa pemboleh ubah persekitaran yang berguna:
- LUCEE_ADMIN_PASSWORD: menetapkan kata laluan Lucee Administrator semasa permulaan.
- LUCEE_VERSION: jika ditetapkan, Lucee menjalankan versi ini tanpa mengira versi yang dipasang.
- LUCEE_JAVA_OPTS: parameter JVM tambahan untuk Tomcat, digunakan oleh /usr/local/tomcat/bin/setenv.sh. Nilai lalainya ialah "-Xms64m -Xmx512m".
Untuk menetapkan zon waktu bekas, guna pemboleh ubah TZ, contohnya TZ=Asia/Kuala_Lumpur, satu pemboleh ubah standard yang dihormati oleh sistem pengendalian berasaskan Ubuntu di dalam imej. Mulai Lucee 6.2, anda juga boleh mengarahkan log ke konsol Docker dengan LUCEE_LOGGING_FORCE_APPENDER=console, dan menukar aras log dengan LUCEE_LOGGING_FORCE_LEVEL. Imej ini turut menyediakan LUCEE_BUILD=true untuk memanaskan Lucee semasa fasa bina imej, yang menjalankan fungsi onBuild dalam Server.cfc untuk tugas persediaan seperti mengesahkan konfigurasi dan menyusun sumber.
Had Memori dan Pemproses
Bekas Lucee ialah proses Java, jadi memori yang anda berikan kepada JVM mesti sepadan dengan had bekas. Tetapkan saiz heap melalui LUCEE_JAVA_OPTS dengan -Xms dan -Xmx, dan pastikan had memori bekas lebih tinggi daripada -Xmx supaya JVM tidak dibunuh oleh kernel. Gunakan bendera docker run --memory dan --cpus, atau medan mem_limit dan cpus dalam fail Compose, untuk mengehadkan sumber bekas. Imej ini juga melakukan beberapa pengoptimuman Java secara lalai: JVM ditetapkan untuk menggunakan /dev/urandom sebagai sumber entropi bagi nombor rawak selamat bagi mengelakkan Tomcat tersekat semasa permulaan, dan Tomcat dikonfigurasi untuk melangkau pengimbasan fail Jar semasa permulaan.
Menyimpan Konfigurasi Supaya Tidak Hilang
Data di dalam bekas hilang apabila bekas dibuang, jadi apa-apa yang anda ubah melalui Lucee Administrator akan hilang jika ia tidak disimpan di luar bekas. Ada dua pendekatan. Pertama, petakan /opt/lucee/web sebagai isipadu berterusan supaya tetapan Lucee untuk laman lalai kekal. Kedua, automasikan konfigurasi dengan fail .CFConfig.json yang disalin ke dalam imej atau dipetakan sebagai isipadu, supaya datasource dan tetapan lain diterapkan semasa permulaan tanpa perlu menyentuh Administrator secara manual.
Membina imej anda sendiri dengan konfigurasi terbina dalam juga menjadikan deploy lebih boleh diulang. Fail Dockerfile ringkas seperti ini menyalin kod dan konfigurasi ke dalam imej:
FROM lucee/lucee:6.2
COPY config/lucee/ /opt/lucee/web/
COPY www /var/www
Aliran Deploy dan Naik Taraf yang Selamat
Aliran deploy yang selamat bermula dengan imej versi tetap, bukan latest. Bina imej, jalankan ujian, kemudian gantikan bekas lama dengan bekas baharu. Kerana kod dan konfigurasi anda berada dalam isipadu atau dalam imej, naik taraf Lucee bermakna menukar tag imej dan mencipta semula bekas.
Sebelum naik taraf, buat sandaran isipadu pangkalan data dan konfigurasi. Naik taraf antara versi utama Lucee boleh membawa perubahan yang mematahkan kod, contohnya perpindahan dari javax ke jakarta. Rujuk panduan migrasi dari ColdFusion ke Lucee dan Lucee 7 dan masa depan untuk memahami perubahan versi sebelum anda naik taraf. Uji imej baharu pada persekitaran pementasan dahulu, kemudian gulingkan ke pengeluaran.
Amalan Keselamatan: Bekas Tanpa Root
Imej rasmi tidak menukar kepada pengguna tanpa keistimewaan secara lalai, jadi proses di dalam bekas berjalan sebagai pengguna lalai imej asas Tomcat, iaitu root. Untuk mengurangkan risiko, jalankan bekas sebagai pengguna tanpa keistimewaan. Dalam Compose, tambah medan user pada perkhidmatan Lucee, dan pastikan isipadu yang dipetakan boleh ditulis oleh pengguna itu.
Amalan keselamatan lain termasuk: jangan gunakan LUCEE_ADMIN_PASSWORD dalam pengeluaran kerana ia bukan konfigurasi yang selamat; sekat akses kepada Lucee Administrator melalui penapisan IP atau URL; dan gunakan varian NGINX yang secara lalai menafikan akses kepada Administrator dalam default.conf. Ikut panduan keselamatan web untuk mengukuhkan aplikasi CFML anda, dan semak Lockdown Guide Lucee untuk mengeraskan pelayan. Untuk kaitan prestasi dan cache dalam bekas, baca panduan caching dan prestasi.
Soalan Lazim (FAQ)
Apakah imej Docker rasmi Lucee?
Imej rasmi ialah lucee/lucee di Docker Hub, dibina di atas Apache Tomcat dan membundel Java serta Tomcat bersama.
Bagaimana cara menjalankan Lucee dengan Docker dengan cepat?
Jalankan docker run -d -p 8888:8888 lucee/lucee:latest, kemudian buka http://localhost:8888.
Bagaimana cara konfigurasi datasource dalam Docker Lucee?
Guna fail .CFConfig.json untuk automasi, atau akses Lucee Administrator di /lucee/admin/ selepas bekas berjalan dan petakan /opt/lucee/web sebagai isipadu supaya tetapan kekal.
Di manakah webroot dalam imej Lucee?
Webroot untuk laman lalai ialah /var/www di dalam bekas. Petakan folder kod anda ke /var/www melalui isipadu.
Bagaimana cara menetapkan memori JVM dalam bekas Lucee?
Guna pemboleh ubah LUCEE_JAVA_OPTS, contohnya "-Xms256m -Xmx1024m", dan pastikan had memori bekas lebih tinggi daripada nilai -Xmx.