Cảm ơn câu trả lời của VonC Tôi đã cố gắng làm cho nó hoạt động nhưng tôi đã thay đổi một chút kiến trúc của mình, dẫn đến 3 vùng chứa thay vì chỉ 1 vùng chứa.
Tôi có một vùng chứa cho mỗi phiên bản Apache / PHP và một vùng chứa với Nginx làm proxy ngược. Tôi nghĩ rằng bạn có thể dễ dàng điều chỉnh điều này để cài đặt Nginx trên máy chủ và thay đổi cấu hình của nó để phù hợp với kiến trúc mà tôi đã mô tả trong câu hỏi của mình.
Lưu ý rằng vì tôi là người mới sử dụng Docker và là một người mới biết về quản trị hệ thống Linux, có thể có một số lỗi và những điều không có ý nghĩa trong các tập lệnh sau, nhưng nó đang hoạt động với tôi. Hãy cải thiện nó :)
Hình ảnh proxy ngược Nginx
Dockerfile:
FROM debian:jessie
MAINTAINER AntoineB version: 0.1
RUN apt-get update && \
apt-get install -y --force-yes \
nginx \
nano
EXPOSE 80
EXPOSE 443
ADD ./proxy.conf /etc/nginx/conf.d/proxy.conf
CMD ["nginx"]
Đây là proxy.conf
được tham chiếu tệp:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_busy_buffers_size 64k;
Và tôi chạy nó bằng cách sử dụng tập lệnh bash sau:
docker run -ti -d -p 80:80 -v /home/antoineb/Docker/images/nginxproxy/virtualhosts:/etc/nginx/sites-enabled --name nginxproxy nginxproxy /bin/bash
Tôi có /home/antoineb/Docker/images/nginxproxy/virtualhosts
thư mục trên máy chủ của tôi có chứa default
sau tệp:
server {
listen 80;
server_name siteZ.com;
location / {
proxy_pass http://apache22php53:80;
}
}
server {
listen 80;
server_name siteA.com;
location / {
proxy_pass http://apache24php56:80;
}
}
server {
listen 80;
server_name siteB.com;
location / {
proxy_pass http://apache24php56:80;
}
}
Hình ảnh Apache 2.2 + PHP 5.3
Dockerfile:
FROM debian:wheezy
MAINTAINER AntoineB version: 0.1
RUN apt-get update
RUN echo "deb http://packages.dotdeb.org squeeze all" > /etc/apt/sources.list.d/dotdeb_squeeze.list
RUN echo "deb-src http://packages.dotdeb.org squeeze all" >> /etc/apt/sources.list.d/dotdeb_squeeze.list
RUN echo "deb http://ftp.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list.d/dotdeb_squeeze.list
RUN echo "Package: *php*" > /etc/apt/preferences.d/php53.pref
RUN echo "Pin: release o=packages.dotdeb.org,n=squeeze" >> /etc/apt/preferences.d/php53.pref
RUN echo "Pin-Priority: 989" >> /etc/apt/preferences.d/php53.pref
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
php5 \
php5-curl \
php5-gd \
php5-mysql \
nano
RUN a2enmod \
php5 \
rewrite
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
EXPOSE 80
EXPOSE 443
CMD /usr/sbin/apache2ctl -D FOREGROUND
Tôi đang khởi chạy nó bằng tập lệnh sau:
docker run -ti -d -p 2253:80 -v /home:/home -v /home/antoineb/Docker/images/apache22php53/virtualhosts:/etc/apache2/sites-enabled --name apache22php53 apache22php53 /bin/bash
Các trang web của tôi được lưu trữ trong /home/website.com/www và các máy chủ ảo apache của tôi được lưu trữ trên máy chủ lưu trữ trong /home/antoineb/Docker/images/apache22php53/virtualhosts
.
Hình ảnh Apache 2.4 + PHP 5.6.9
Dockerfile:
FROM debian:jessie
MAINTAINER AntoineB version: 0.1
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
php5 \
php5-curl \
php5-gd \
php5-mysql \
nano
RUN a2enmod \
php5 \
rewrite
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
EXPOSE 80
EXPOSE 443
CMD /usr/sbin/apache2ctl -D FOREGROUND
Tập lệnh đang chạy của tôi:
docker run -ti -d -p 2456:80 -v /home:/home -v /home/antoineb/Docker/images/apache24php56/virtualhosts:/etc/apache2/sites-enabled --name apache24php56 apache24php56 /bin/bash
Một lần nữa, các trang web của tôi được lưu trữ trong /home/website.com/www và các máy chủ ảo apache của tôi được lưu trữ trên máy chủ lưu trữ trong /home/antoineb/Docker/images/apache24php56/virtualhosts
.