使用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
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 : ejiyuan/webapp
六,验证
直接访问宿主ip地址加 启动时给定的端口号8081或使用curl
curl http://192.168.99.100:8081
七,问题
这里已nginx为例如下如果你的项目默认页不是index.html,会出现 401或下面页面:
主要原因是,没有指定默认页,使用下面命令登录到 镜像中
docker exec -it containerId /bin/bash
containerId 可以使用 docker ps 得到,修改/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 重新启容器
九、参考文档
使用docker创建静态网站应用-多种方式的更多相关文章
- java创建线程的多种方式
java创建线程的四种方式 1.继承 Thread 类 通过继承 Thread 类,并重写它的 run 方法,我们就可以创建一个线程. 首先定义一个类来继承 Thread 类,重写 run 方法. 然 ...
- Python 创建字典的多种方式
1.通过关键字dict和关键字参数创建 >>> dic = dict(spam = 1, egg = 2, bar =3) >>> dic {'bar': 3, ' ...
- Java并发编程原理与实战五:创建线程的多种方式
一.继承Thread类 public class Demo1 extends Thread { public Demo1(String name) { super(name); } @Override ...
- 进入Docker容器的4种方式
进入Docker容器的4种方式 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进 ...
- 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作
实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock ...
- 特性attribute,声明和使用attribute,应用attribute,AOP面向切面,多种方式实现AOP
1 特性attribute,和注释有什么区别2 声明和使用attribute3 应用attribute4 AOP面向切面5 多种方式实现AOP ---------------------------- ...
- idea打包jar的多种方式
这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式: 用IDEA自带的打包形式 用Maven插件maven-shade-plugin打包 用Maven插件maven-a ...
- Spring学习总结(一)——Spring实现IoC的多种方式
控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象编程对象的创 ...
- Linux命令之ar - 创建静态库.a文件和动态库.so
转自:http://blog.csdn.net/eastonwoo/article/details/8241693 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令行中 ...
随机推荐
- 轻松理解AOP(面向切面编程)
https://my.oschina.net/yanquan345/blog/203415
- Selenium之table操作
操作内容: 获取table总行数.总列数.获取某单元格的text值,删除一行[如果每行后边提供删除的按钮] HTML代码: <html><head><meta http- ...
- 评测parser的好坏
1.在dependency parsing中一般是用 LAS UAS 来衡量 简要说来UAS是知道是边对了(也就是它依赖的节点找对了)就算对,而LAS在前者的基础上要求更加严格,还要求边的Label也 ...
- MYSQL常用命令2
mysql 的dos命令行大全 2016年11月04日 16:03:59 阅读数:7987 1.连接Mysql(中文乱码在文章的最后) 格式: mysql -h主机地址 -u用户名 -p用户密码 1. ...
- what are you 弄啥嘞!!!!!!!!!!!!!!!!泛型
1.为什么需要泛型 泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍.总结了关于泛型的知识.希望能给你带来一些帮助. 先看下面的代码: List list = ...
- git 提交本地工程
1> 进入github 建立repository 2> 得到git master 地址 3> 得到进入本地工程目录 右键->git bash here 4>执行 以下命令 ...
- 设置table的每竖的宽度
- viewport定义,弹性布局,响应式布局及LESS和SASS框架应用
一,移动端宽度设置 viewport视图窗口,<meta name="viewport" content="width=device-width,initial-s ...
- C# DES加密类,16位的加密。
这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...
- mininet的学习之三----------mininet中流表应用实战
我们看的同一个视频,工整的整理见以下网址 https://blog.csdn.net/weixin_36372879/article/details/86371583#commentBox