Lingkungan tumpukan LAMP dasar yang dibangun menggunakan Docker Compose. Ini terdiri dari yang berikut:
Saat ini, kami memiliki beberapa versi PHP yang berbeda. Gunakan versi php yang sesuai sesuai kebutuhan:
docker compose up -d
. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
Tumpukan LAMP Anda sekarang siap!! Anda dapat mengaksesnya melalui http://localhost
.
Docker Stack ini dibuat untuk pengembangan lokal dan bukan untuk penggunaan produksi.
Paket ini hadir dengan opsi konfigurasi default. Anda dapat memodifikasinya dengan membuat file .env
di direktori root Anda. Untuk memudahkannya, cukup salin konten dari file sample.env
dan perbarui nilai variabel lingkungan sesuai kebutuhan Anda.
Ada variabel konfigurasi berikut yang tersedia dan Anda dapat menyesuaikannya dengan menimpa file .env
Anda sendiri.
PHPVERSION Digunakan untuk menentukan Versi PHP mana yang ingin Anda gunakan. Defaultnya selalu ke Versi PHP terbaru.
PHP_INI Tentukan modifikasi php.ini
khusus Anda untuk memenuhi kebutuhan Anda.
DOCUMENT_ROOT
Ini adalah root dokumen untuk server Apache. Nilai default untuk ini adalah ./www
. Semua situs Anda akan diarahkan ke sini dan akan disinkronkan secara otomatis.
APACHE_DOCUMENT_ROOT
Nilai file konfigurasi Apache. Nilai default untuk ini adalah /var/www/html.
VHOSTS_DIR
Ini untuk host virtual. Nilai default untuk ini adalah ./config/vhosts
. Anda dapat menempatkan file conf host virtual Anda di sini.
Pastikan Anda menambahkan entri ke file
hosts
sistem Anda untuk setiap host virtual.
APACHE_LOG_DIR
Ini akan digunakan untuk menyimpan log Apache. Nilai default untuk ini adalah ./logs/apache2
.
Untuk Pengguna Apple Silicon: Silakan pilih Mariadb sebagai Database. Oracle tidak membangun Kontainer SQL untuk Arsitektur lengan
DATABASE
Tentukan Versi MySQL atau MariaDB mana yang ingin Anda gunakan.
MYSQL_INITDB_DIR
Saat wadah dimulai untuk pertama kalinya, file dalam direktori ini dengan ekstensi .sh
, .sql
, .sql.gz
dan .sql.xz
akan dieksekusi sesuai urutan abjad. File .sh
tanpa izin eksekusi file bersumber daripada dieksekusi. Nilai default untuk ini adalah ./config/initdb
.
MYSQL_DATA_DIR
Ini adalah direktori data MySQL. Nilai default untuk ini adalah ./data/mysql
. Semua file data MySQL Anda akan disimpan di sini.
MYSQL_LOG_DIR
Ini akan digunakan untuk menyimpan log Apache. Nilai default untuk ini adalah ./logs/mysql
.
Apache dikonfigurasi untuk berjalan pada port 80. Jadi, Anda dapat mengaksesnya melalui http://localhost
.
Secara default, modul berikut diaktifkan.
Jika Anda ingin mengaktifkan lebih banyak modul, cukup perbarui
./bin/phpX/Dockerfile
. Anda juga dapat membuat PR dan kami akan menggabungkannya jika dirasa bagus untuk tujuan umum. Anda harus membangun kembali image buruh pelabuhan dengan menjalankandocker compose build
dan memulai ulang kontainer buruh pelabuhan.
Anda dapat terhubung ke server web menggunakan perintah docker compose exec
untuk melakukan berbagai operasi di dalamnya. Gunakan perintah di bawah ini untuk masuk ke container melalui ssh.
docker compose exec webserver bash
Versi php yang diinstal bergantung pada file .env
Anda.
Secara default, ekstensi berikut dipasang. Mungkin berbeda untuk Versi PHP <7.xx
Jika Anda ingin memasang lebih banyak ekstensi, cukup perbarui
./bin/webserver/Dockerfile
. Anda juga dapat membuat PR dan kami akan menggabungkannya jika dirasa bagus untuk tujuan umum. Anda harus membangun kembali image buruh pelabuhan dengan menjalankandocker compose build
dan memulai ulang kontainer buruh pelabuhan.
phpMyAdmin dikonfigurasi untuk berjalan pada port 8080. Gunakan kredensial default berikut.
http://localhost:8080/
nama pengguna: root
kata sandi: harimau
Xdebug terinstal secara default dan versinya bergantung pada versi PHP yang dipilih di file ".env"
.
Versi Xdebug:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Untuk menggunakan Xdebug Anda perlu mengaktifkan pengaturan di file ./config/php/php.ini
sesuai dengan versi PHP yang dipilih.
Contoh:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code: Anda harus menginstal ekstensi Xdebug "PHP Debug". Setelah terinstal, buka Debug dan buat file peluncuran sehingga IDE Anda dapat mendengarkan dan bekerja dengan baik.
Contoh:
SANGAT PENTING: pathMappings
bergantung pada cara Anda membuka folder di VS Code. Setiap folder memiliki konfigurasi peluncurannya sendiri, yang dapat Anda lihat di .vscode/launch.json
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
Sekarang, buat breakpoint dan jalankan debug.
Tip! Setelah konfigurasi ini, Anda mungkin perlu memulai ulang container.
Itu datang dengan Redis. Ini berjalan pada port default 6379
.
Dukungan untuk domain https
sudah ada di dalamnya tetapi dinonaktifkan secara default. Ada 3 cara untuk mengaktifkan dan mengkonfigurasi SSL; https
di localhost
menjadi yang termudah. Jika Anda mencoba membuat ulang lingkungan pengujian sedekat mungkin dengan lingkungan produksi, nama domain apa pun dapat didukung dengan lebih banyak konfigurasi.
Pemberitahuan: Untuk setiap nama domain non-localhost yang ingin Anda gunakan https
, Anda perlu memodifikasi file host komputer Anda dan mengarahkan nama domain ke 127.0.0.1
. Jika Anda gagal melakukan ini, SSL tidak akan berfungsi dan Anda akan dialihkan ke internet setiap kali Anda mencoba mengunjungi nama domain tersebut secara lokal.
Untuk mengaktifkan https
di localhost
(https://localhost) Anda perlu:
localhost
:mkcert
, di terminal jalankan mkcert localhost 127.0.0.1 ::1
.cert.pem
dan cert-key.pem
.config/ssl
.443
vhost di config/vhosts/default.conf
. Selesai. Sekarang, kapan pun Anda menghidupkan wadah LAMP Anda, https
akan berfungsi di localhost
.
Jika Anda ingin menggunakan nama domain normal untuk pengujian lokal, dan memerlukan dukungan https
, solusi paling sederhana adalah sertifikat SSL yang mencakup semua nama domain:
mkcert
, di terminal jalankan mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
di mana Anda mengganti semua nama domain dan alamat IP dengan yang ingin Anda dukung.cert.pem
dan cert-key.pem
.config/ssl
.443
vhost di config/vhosts/default.conf
. Selesai. Karena Anda menggabungkan semua nama domain ke dalam satu sertifikat, file vhost akan mendukung pengaturan Anda tanpa perlu memodifikasinya lebih lanjut. Namun Anda dapat menambahkan aturan khusus domain jika diinginkan. Sekarang, kapan pun Anda mengaktifkan wadah LAMP, https
akan berfungsi di semua domain yang Anda tentukan.
Jika Anda ingin lingkungan pengujian lokal sama persis dengan produksi Anda, dan memerlukan dukungan https
, Anda dapat membuat sertifikat SSL untuk setiap domain yang ingin Anda dukung:
mkcert
, di terminal jalankan mkcert [your-domain-name(s)-here]
dengan mengganti bagian braket dengan nama domain Anda.[name]-cert.pem
dan [name]-cert-key.pem
mengganti bagian braket dengan nama unik.config/ssl
.443
dari file vhost ( config/vhosts/default.conf
), buat aturan baru yang cocok dengan nama domain dan nama file sertifikat Anda. Selesai. Kontainer LAMP akan secara otomatis menarik sertifikat SSL apa pun di config/ssl
saat dimulai. Selama Anda mengonfigurasi file vhosts dengan benar dan menempatkan sertifikat SSL di config/ssl
, setiap kali Anda mengaktifkan wadah LAMP, https
akan berfungsi di domain yang Anda tentukan.
Kami senang jika Anda ingin membuat permintaan tarik atau membantu orang-orang yang mempunyai masalah. Jika Anda ingin membuat PR, harap diingat bahwa tumpukan ini tidak dibuat untuk penggunaan produksi, dan perubahan harus baik untuk tujuan umum dan tidak terlalu terspesialisasi.
Harap dicatat bahwa kami menyederhanakan struktur proyek dari beberapa cabang untuk setiap versi php, menjadi satu cabang master terpusat. Silakan buat PR Anda terhadap cabang master.
Terima kasih!
Kami ingin memberdayakan pengembang untuk dengan cepat membuat Aplikasi kreatif. Oleh karena itu kami menyediakan lingkungan pengembangan lokal yang mudah untuk diatur untuk beberapa Kerangka Kerja dan Versi PHP yang berbeda. Dalam Produksi, Anda harus memodifikasi minimal subjek berikut: