Satu minggu kemudian saya berhasil membuatnya bekerja tetapi dengan cara yang berbeda. Saya berhenti bermain-main dengan tuan rumah dan mulai belajar bagaimana Docker dapat menyelamatkan hidup saya.
Posting ini memberi saya kunci:
Docker - Jalankan Apache pada host dan wadah untuk situs web yang berbeda
Baca iniciatic saya tentang buruh pelabuhan adalah ini: PHP Web Development dengan Docker
Meringkas, saya tidak perlu menginstal apache2.2 & PHP5.3 di server host saya, saya dapat memiliki wadah terisolasi di mana saya dapat menginstal apa pun yang saya butuhkan (biasanya satu layanan) dan melupakan kemungkinan tidak kompatibel dengan versi OS host. Docker mengelola semuanya. Jadi saya dapat memiliki satu wadah dengan apache 2.2 + PHP 5.3 karena akan berada dalam OS squeeze debian. Wadah lain dengan apache 2.2 + PHP 5.4 karena akan berada dalam Wheezy, yang lain dengan apache 2.4 + PHP7.0 seperti dalam peregangan dan sebagainya. Semua bekerja sebagai waktu yang sama dan melayani berbagai domain. Untuk mencapai yang terakhir, buat apache / nginx pada host agar berfungsi sebagai proxy terbalik yang mengarahkan ulang setiap domain ke wadah apache-php yang berbeda berkat pemetaan port docker. Anda bahkan tidak perlu memiliki apache / nginx pada host, bisa juga dalam wadah.
Cara buruh pelabuhan adalah memiliki masing-masing layanan (mikro) dalam sebuah wadah, sehingga Anda dapat memiliki mariaDB di wadah lain, dll.
Langkah-langkah saya (dirangkum): ( Saya tidak dapat memposting lebih dari ke tautan, ketika saya mendapatkan reputasi yang cukup, saya akan mengedit dan menambahkannya )
0 - Baca tentang buruh pelabuhan (semakin banyak semakin baik): cara membuat gambar dengan Dockerfile , praktik terbaik , jaringan di dalam buruh pelabuhan, ...
1 - Instal Docker: ikuti panduan resmi selalu.
2 - Buat dir dengan nama gambar masa depan Anda (misalnya / home / user / docker / images / apache22php53), di dalam buat Dockerfile Anda dan konfigurasi (virtualhost conf dalam hal ini) Dockerfile saya adalah:
FROM debian:squeeze
LABEL maintainer="raguchi@gmail.com"
# squeeze new mirrors
RUN echo "deb http://archive.debian.org/debian/ squeeze contrib main non-free" > /etc/apt/sources.list
RUN apt-get update
# Common packages
RUN apt-get update && \
apt-get install -y --force-yes curl wget
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
libapache2-mod-php5 \
ntp \
php5 \
php5-curl \
php5-gd \
php5-ldap \
php5-mcrypt \
php5-mysql \
vim
RUN a2enmod \
php5 \
rewrite \
ssl
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
# RUN chown -R www-data:www-data /var/www
COPY conf/apache/virtualhosts /etc/apache2/sites-enabled
# disable default virtualhost
RUN a2dissite 000-default
EXPOSE 80
EXPOSE 443
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Di dalam dir, letakkan file conf virtualhost di dalam path: conf / apache / virtualhosts /
3 - membangun gambar dengan (cd sebelumnya di dalam dir):
sudo docker build -t apache22php53 .
4 - luncurkan wadah dengan:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker akan memetakan (-p) 2253 port host ke 80 port container. Kami sedang memasang (-v) juga root dokumen host kami (/ var / www / html) di root dokumen apache-container (dalam squeeze adalah / var / www). Pengaturan are juga nama wadah (--name).
5 - ssh ke wadah dengan:
sudo docker exec -ti apache22php53 /bin/bash
dan mulai apache jika diperlukan (seperti dalam kasus saya). "keluar" untuk kembali ke host cli.
6 - navigasikan ke ... yourvhostdomain.com:253 dan Anda akan melihat apache Anda berjalan dengan PHP5.3 dimuat.
Ini adalah dasar-dasarnya. Setelah itu Anda akan belajar tentang cara me-mount data host (www, database, dll) di dalam kontainer, bagaimana kontainer dapat berkomunikasi di antara mereka dan dengan host (IP privat dalam jaringan buruh pelabuhan), cara menggunakan komposisi buruh pelabuhan untuk mengatur beberapa wadah sekaligus (web, database, dll), membalikkan proxy untuk beberapa webserver wadah, dll.