Saya mengelola server di mana pengguna memiliki situs web sendiri di atasnya yang dapat diakses oleh FTP (seperti perusahaan hosting) dan alih-alih bekerja mengisolasi proses tumpukan LAMP, saya bertanya-tanya apakah mungkin untuk mengimplementasikan Docker dan menggunakan gambar per situs web.
Dari apa yang saya mengerti, Anda dapat mengekspos instance Docker melalui port mereka, jadi jika Anda menjalankan dua instance docker di server yang sama, Anda harus mengekspos dua port yang berbeda.
Tetapi apakah mungkin untuk mengekspor bukan port, tetapi nama server, seperti:
- www.somewebsite.com: Contoh Docker 1
- www.otherwebsite.com: Docker instance 2
- www.etc.com: Contoh Docker ...
Dan itu, di server yang sama.
Saya berpikir untuk menginstal hanya Apache di server, yang akan mengarahkan permintaan ke instance Docker khusus berdasarkan nama server, tetapi kemudian saya harus menginstal Apache (lagi!) Dan MySQL pada setiap instance Docker.
Apakah ini mungkin dan apalagi, apakah ini menarik dalam hal kinerja (atau tidak sama sekali)?
Terima kasih untuk bantuannya.
Jawaban:
Ya itu mungkin. Yang perlu Anda lakukan adalah menyediakan beberapa 80 port. satu untuk setiap URL. Anda dapat melakukan ini menggunakan, mis. Virtual Host of Apache berjalan pada server host Docker.
File konfigurasi Apache akan terlihat seperti ini:
sumber
ProxyPreserveHost On
, jadi Anda tidak berakhir dengan banyak tautan ke local.hostname.ofDockerHost: 12345 insite situs web Anda. Berikut info lebih lanjut yang membantu saya: digitalocean.com/community/tutorials/…Itu mungkin. Anda dapat menggunakan apache (atau lebih baik lagi, haproxy, nginx atau varnish, yang mungkin lebih efisien daripada apache untuk tugas pengalihan itu) di server utama, untuk mengarahkan ulang ke port apache dari masing-masing wadah.
Tetapi, tergantung pada situs yang Anda jalankan di sana (dan konfigurasi apache mereka), mungkin memerlukan lebih banyak memori daripada menggunakan satu pusat apache dengan virtualhosts, khususnya jika Anda memiliki modul (yaitu php) yang membutuhkan banyak RAM.
sumber
Saya tahu ini sudah dijawab, tetapi saya ingin mengambil satu langkah lebih jauh dan menunjukkan kepada Anda contoh bagaimana ini bisa dilakukan, untuk memberikan jawaban yang lebih lengkap.
Silakan lihat gambar buruh pelabuhan saya di sini dengan instruksi tentang cara menggunakannya, ini akan menunjukkan kepada Anda bagaimana mengkonfigurasi dua situs https://hub.docker.com/r/vect0r/httpd-proxy/
Seperti yang dikatakan jihun, Anda harus memastikan bahwa Anda telah mengatur konfigurasi vhost. Contoh saya menggunakan port 80 untuk menampilkan situs uji example.com dan 81 untuk menampilkan situs uji example2.com. Juga penting untuk dicatat bahwa Anda perlu menentukan konten Anda dan mengekspos port yang diperlukan di Dockerfile Anda, seperti itu;
Semoga ini bisa membantu menjelaskan proses menjadi sedikit lebih. Jangan ragu untuk bertanya kepada saya pertanyaan lebih lanjut tentang ini, dengan senang hati membantu.
Salam,
V
sumber
Dalam kasus saya, saya perlu menambahkan SSLProxyEngine On , ProxyPreserveHost On dan RequestHeader mengatur Front-End-Https "On" ke file vhost apache 2.4 saya, karena saya ingin mengaktifkan SSL pada wadah buruh pelabuhan. Tentang local.hostname.ofDockerHost , dalam kasus saya nama server host yang menjalankan wadah buruh pelabuhan adalah lucas , dan port yang dipetakan ke port 443 dari wadah buruh pelabuhan adalah 1443 (karena port 443 sudah digunakan oleh apache di host. server), sehingga baris itu berakhir seperti ini https: // lucas: 1443 /
Ini adalah pengaturan terakhir, dan itu berfungsi dengan baik!
Akhirnya, dalam wadah buruh pelabuhan saya harus mengatur header SSL proxy. Dalam kasus saya, wadah itu menjalankan nginx dan sesuatu yang disebut omnibus untuk menyiapkan aplikasi ruby. Saya pikir ini bisa diatur dalam file konfigurasi nginx juga. Akan menuliskannya seperti kalau-kalau seseorang menemukan ini bermanfaat
Panduan lengkap untuk apache, ISP Config, server Ubuntu 16.04 di sini https://www.howtoforge.com/community/threads/subdomain-or-subfolder-route-requests-to-running-docker-image.73845/#post-347744
sumber