Một tuần sau tôi đã xoay sở để làm cho nó hoạt động nhưng theo một cách khác. Tôi đã ngừng nhắn tin với chủ nhà và bắt đầu tìm hiểu cách Docker có thể cứu mạng tôi.
Bài đăng này đã cho tôi chìa khóa:
Docker - Chạy Apache trên máy chủ và vùng chứa cho các trang web khác nhau
Đọc thông tin của tôi về docker là cái này: Phát triển web PHP với Docker
Tóm tắt, tôi không cần cài đặt apache2.2 & PHP5.3 trong máy chủ của mình, tôi có thể có một thùng chứa riêng biệt nơi tôi có thể cài đặt bất cứ thứ gì tôi cần (thường là một dịch vụ) và quên đi sự không tương thích có thể có với phiên bản HĐH máy chủ. Docker quản lý tất cả. Vì vậy, tôi có thể có một thùng chứa với apache 2.2 + PHP 5.3 vì nó sẽ nằm trong một hệ điều hành nén debian. Một container khác có apache 2.2 + PHP 5.4 giống như trong Wheezy, một container khác có apache 2.4 + PHP7.0 như đang kéo dài và cứ thế. Tất cả làm việc như cùng một lúc và phục vụ các tên miền khác nhau. Để đạt được thứ hai, hãy tạo apache / nginx trên máy chủ để hoạt động như proxy ngược chuyển hướng từng tên miền sang một thùng chứa apache-php khác nhờ ánh xạ cổng docker. Bạn thậm chí không cần phải có apache / nginx trên máy chủ, nó cũng có thể nằm trong một thùng chứa.
Cách docker là để mỗi dịch vụ (micro) trong một container, vì vậy bạn có thể có mariaDB trong một container khác, v.v.
Các bước của tôi (được tóm tắt): ( Tôi không thể đăng nhiều hơn các liên kết, khi tôi có đủ danh tiếng, tôi sẽ chỉnh sửa và thêm chúng )
0 - Đọc về docker (càng nhiều càng tốt): cách xây dựng hình ảnh với Dockerfile , cách thực hành tốt nhất , kết nối mạng trong docker, ...
1 - Cài đặt Docker: làm theo hướng dẫn chính thức luôn.
2 - Tạo một thư mục với tên hình ảnh trong tương lai của bạn (/ home / user / docker / images / apache22php53 vd), bên trong tạo Dockerfile của bạn và cấu hình (virtualhost conf trong trường hợp này) Dockerfile của tôi là:
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"]
Bên trong thư mục đặt tập tin conf Virtualhost của bạn bên trong đường dẫn: conf / apache / virtualhosts /
3 - xây dựng hình ảnh với (cd trước bên trong thư mục):
sudo docker build -t apache22php53 .
4 - khởi chạy container với:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker sẽ ánh xạ (-p) 2253 cổng máy chủ thành 80 cổng container. Chúng tôi cũng đang gắn (-v) gốc tài liệu lưu trữ của chúng tôi (/ var / www / html) trong thư mục gốc của tài liệu apache-container (trong nén là / var / www). Các thiết lập cũng tên container (--name).
5 - ssh để chứa với:
sudo docker exec -ti apache22php53 /bin/bash
và bắt đầu apache nếu cần thiết (như trong trường hợp của tôi). "thoát" để quay lại máy chủ cli.
6 - điều hướng đến ... yourvhostdomain.com:2253 và bạn sẽ thấy apache của mình đang chạy với PHP5.3 được tải.
Đây là những điều cơ bản. Sau đó, bạn sẽ tìm hiểu về cách gắn dữ liệu máy chủ (www, cơ sở dữ liệu, v.v.) bên trong các thùng chứa, cách các container có thể giao tiếp giữa chúng và với máy chủ (riêng tư IP trong mạng docker), cách sử dụng docker-compose để thiết lập nhiều container cùng một lúc (web, cơ sở dữ liệu, v.v.), proxy ngược cho nhiều máy chủ web container, v.v.