什么是Apache Apache全称Apache HTTP Server,它跟nginx一样一款开源免费的WEB应用服务器。Apache几乎可以运行在所有的Unix、Windows、Linux系统平台上,具有很强的移植性和拓展性。Apache的特点就是简单、速度快、性能稳定并可做代理服务器来使用,它能通过简单的 API 扩展将Perl/Python等解释器编译到服务器中来拓展Apache的功能。Apache虽然没有为管理员提供图形用户界面但是提供了简单的文本配置文件,可以根据需要用它来方便快捷的配置Apache服务。从W3Techs最新公布的数据中可以看到Apache的市场份额还是占据榜首,不过市场份额相比往年掉了不少(因为nginx的崛起抢占了大部分市场份额)。 Docker安装Apache docker安装应用的方法基本相同,具体的可以参考文章【Docker实战007:docker安装部署nginx项目详解】。在安装前看下docker仓库是否有该镜像,有就直接拉取下来运行即可。当然你不拉取也可以,构建容器的时候如果本地不存在该镜像则会自动从docker hub拉取。apache的镜像名不是apache,而是httpd(httpd是Apache HTTP服务器程序,直接该执行程序即可启动apache服务)。 运行Apache容器 动容器可以通过命令: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]来启动容器,可以通过配置参数来指定nginx的容器名称和运行模式等。这里我们运行一个展示vue项目的nginx服务并指定访问ip为8001,其指令为:docker run -d --name apache-test -p 8002:80 httpd。-p表示端口映射将本地的 8002 端口映射到容器内部的 80 端口,-d则是指定该容器一直在后台运行。这里要运行还有一个目的就是获取容器的ID,我们在后面的拷贝配置文件时需要用到该ID。 创建Apache目录 这个跟Nginx的目的是一样的,就是在宿主机上创建用于映射Apache文件的目录,用来存放Apache的默认配置文件和静态文件。创建目录的命令为:mkdir -p /opt/apache/www /opt/apache/logs /opt/apache/conf ,其中-p指递归创建目录(如果上级目录不存在,会按目录层级自动创建目录)。www目录作为apache容器配置的应用程序目录,logs目录作为apache容器的日志存储目录,conf目录作为apache容器的配置文件。创建好之后将apache默认的配置文件拷贝过来方便直接使用,执行命令:docker cp 5f07c5049a26:/usr/local/apache2/conf/httpd.conf /opt/apache/conf(其他文件自己看需求是否拷贝,)。 删除临时容器 映射前需要先停止之前运行的临时容器并将该容器移除,否则会占用当前容器的ID(当然也可以定义新的容器来运行)。 映射并启动Apache docker运行容器时提供了参数-v可以用来与宿主机绑定挂载目录,参数格式为: -v 宿主机目录>:容器目录>。-v /opt/apache/www/:/usr/local/apache2/htdocs/ :将宿主机中的www目录挂载到容器的/usr/local/apache2/htdocs/。-v /opt/apache/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf :将宿主机中的的conf/httpd.conf文件挂载到容器的/usr/local/apache2/conf/httpd.conf。-v /opt/apache/logs/:/usr/local/apache2/logs/ :将宿主机中的logs目录挂载到容器的/usr/local/apache2/logs/。这样docker中的apache就会加载宿主机中对应的文件目录了,这样我们就可以很方便的在宿主机中对docker中的apache进行配置了。 上传打包的项目文件 将vue打包好的文件上传到www目录中,再次打开浏览器访问地址 http://127.0.0.1:8002/就可以看到我们自己的项目了。这里我用的是FinalShell工具(xshell也不错,配带xftp同样可以方便的上传文件),可以直接将文件拖拽到服务器。 总结: 以上内容是小编给大家分享的【Docker实战009:docker部署Apache项目详解】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。 为了方便学习,下面附上本文用到的源码:# docker search httpd # docker pull httpd # docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest 3dd970e6b110 5 days ago 138MB # docker run -d --name apache-test -p 8002:80 httpd 549c4ed815886e2c5ce48e91cee3eeafa2bfac34a88bb400bc97f2793308f1a6 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 549c4ed81588 httpd "httpd-foreground" About a minute ago Up About a minute 0.0.0.0:8002->80/tcp apache-test # docker ps //查看容器ID (或者docker ps -a) CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 549c4ed81588 httpd "httpd-foreground" About an hour ago Up About an hour 0.0.0.0:8002->80/tcp apache-test # docker stop 549c4ed81588 //停止容器运行 549c4ed81588 # docker rm 549c4ed81588 //移除容器 // 最后执行的命令为: # docker run -d -p 8002:80 --restart=always --name apache-test -v /opt/apache/www/:/usr/local/apache2/htdocs/ -v /opt/apache/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf -v /opt/apache/logs/:/usr/local/apache2/logs/ httpd