一个星期后,我设法以一种不同的方式使其工作。我不再与主机打交道,开始学习Docker如何挽救我的生命。
这篇文章给了我关键:
Docker-在不同网站的主机和容器上运行Apache
我对Docker的见解是这样的:使用Docker进行PHP Web开发
总而言之,我不需要在主机服务器中安装apache2.2和PHP5.3,我可以有一个隔离的容器,可以在其中安装所需的任何东西(通常是一项服务),而不必担心与主机OS版本的不兼容性。Docker负责一切。因此,我可以拥有一个使用Apache 2.2 + PHP 5.3的容器,就像在debian squeeze OS中那样。另一个带有Apache 2.2 + PHP 5.4的容器(如Wheezy),另一个带有apache 2.4 + PHP7.0的容器,以此类推。所有这些都同时工作并且服务于不同的域。为了实现后者,在主机上使apache / nginx作为反向代理工作,这要归功于docker端口映射,从而将每个域重定向到不同的apache-php容器。您甚至不需要在主机上安装apache / nginx,它也可以在容器中。
docker方式是将每个(微)服务放在一个容器中,因此您可以在另一个容器中使用mariaDB,依此类推。
我的步骤(摘要):(我发布的内容不能超过链接,当我获得足够的声誉时,我将对其进行编辑和添加)
0-了解Docker(越多越好):如何使用Dockerfile构建映像,最佳实践,在Docker中联网,...
1-安装Docker:始终遵循官方指南。
2-用您将来的映像名称创建目录(例如/ home / user / docker / images / apache22php53),在其中创建您的Dockerfile和配置(在这种情况下为virtualhost conf),我的Dockerfile为:
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"]
在目录中,将您的virtualhost conf文件放在以下路径中:conf / apache / virtualhosts /
3-使用(目录中的先前CD)构建映像:
sudo docker build -t apache22php53 .
4-使用以下命令启动容器:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker会将(-p)2253主机端口映射到80个容器端口。我们也在apache-container文档根目录(在/ var / www中压缩)中也挂载了(-v)我们的宿主文档根目录(/ var / www / html)。还在设置容器名称(--name)。
5 -SSH到容器,具有:
sudo docker exec -ti apache22php53 /bin/bash
并根据需要启动apache(以我为例)。“退出”回到主机cli。
6-导航到... yourvhostdomain.com:2253,您应该看到已加载PHP5.3的Apache。
这是基础。之后,您将学习如何在容器内装载主机数据(www,数据库等),如何在容器之间以及与主机之间进行通信(Docker网络中的私有IP),如何使用docker-compose设置多个容器一次(Web,数据库等),多个容器Web服务器的反向代理等。