使用docker创建静态网站应用-多种方式
能承载静态网站的服务器有很多,本文使用,nginx、apache、tomcat服务器演示docker静态网站应用设置
一,创建docker文件,
不同服务器的docker文件不一样,下面分别创建nginx、apache、tomcat三个服务器的docker文件,其实主要就是区别于FROM标签于项目文件目录
目录结构:
1,nginx 的 docker文件
FROM nginx COPY ./www /usr/share/nginx/html/ WORKDIR /usr/share/nginx/html/
RUN chown -R daemon:daemon * && chmod -R 755 * EXPOSE 80
2,apache的 docker文件
FROM httpd:alpine COPY ./www/ /usr/local/apache2/htdocs/ WORKDIR /usr/local/apache2/htdocs/
RUN chown -R daemon:daemon * && chmod -R 755 * EXPOSE 80
3,tomcat的 docker文件
FROM tomcat:alpine COPY ./www/ /usr/local/tomcat/webapps/ROOT/webapp WORKDIR /usr/local/tomcat/webapps/ROOT/webapp #切换到项目目录 RUN chown -R daemon:daemon * && chmod -R 755 * #设置权限
这里创建了一个 名为 webapp的项目访问时url地址后面要加入/webapp,这里还要注意Tomcat默认端口是 8080
三个文件应用于不同的环境部署你的网站,根据情况设置权限,也可不设置
二,构建项目
docker build -t imageName .(注意后面的点,imageName最好是“hub账号名/项目名”方便推送到公共库)
下面会显示构建过程
三,推送到公共仓库
需要先执行 docker login 登录
docker push ejiyuan/webapp
四,在服务器上拉取项目
需要先执行 docker login 登录
docker pull ejiyuan/webapp
执行docker images查看镜像是否存在
五,执行项目
docker run -d -p 8081:80 ejiyuan/webapp
六,验证
直接访问宿主ip地址加 启动时给定的端口号8081或使用curl
1 | curl http://192.168.99.100:8081 |
七,问题
这里已nginx为例如下如果你的项目默认页不是index.html,会出现 401或下面页面:
主要原因是,没有指定默认页,使用下面命令登录到 镜像中
1 | docker exec -it containerId /bin/bash |
1 | containerId 可以使用 <em>docker ps</em> 得到,修改/etc/nginx/conf.d/ default .cnf,容器中如果没有vim或vi 通过下面两个命令安装 |
apt-get update
apt update
apt install vim
或使用sed命令
sed -i '10c index default.html;' /etc/nginx/conf.d/default.conf
修改往后需要重新加载
nginx -t #检查配置文件是否有误 sevice nginx reload # 新加载配置文件
如果不存在 service 使用 exit 退出容器后,使用 docker restart containerId 重新启容器
九、参考文档
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库