Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Docker - Chạy Apache trên máy chủ và vùng chứa cho các trang web khác nhau

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:

Máy chủ
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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thông báo 'PDOException' không có ngoại lệ 'tên nguồn dữ liệu không hợp lệ'

  2. Sau khi cài đặt MySQL qua Brew, tôi gặp lỗi - Máy chủ thoát mà không cập nhật tệp PID

  3. c9.io - cách tìm địa chỉ máy chủ để tạo kết nối mysql trong nền tảng node.js

  4. Khắc phục sự cố Không có tệp hoặc thư mục như vậy khi chạy `php app / console theory:schema:create`

  5. Lỗi xuất hiện trong mã mysqli và call_user_func_array ()