使用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++开发程序时经常用到,但我很少单独在命令行中 ...
随机推荐
- CSS第二篇
给导航设置圆角的代码: c3 里面的属性:border-radius:7px: 1补充盒子问题 (盒子边框紧邻变粗问题)将两个盒子边框重叠并且设置定位提高层级避免盒子重叠,鼠标放上去只显示一个盒子的边 ...
- 在Java中用 . 深层访问JSON数据
本文介绍Java中解析JSON的一种方法,可以让我们在Java程序中也用x.x.x的形式访问JSON数据中的值. 代码大部分来源非本人,本人在源代码基础上加以修改以使正常运行. 代码: // 将提取方 ...
- Good Time------打卡让生活更美好
Section 1团队介绍 Part 1 队员信息 姓名 学号 职务 王怡镔 2016012045 组长 于鑫宇 2016012029 组员 张济吨 2016012072 组员 黄鹤 20160120 ...
- IOS 生成静态库文件(.framework)
http://blog.csdn.net/zwl492454828/article/details/55095422
- kettle并行运行时出现「Unknown error in KarafBlueprintWatcher」
背景:在使用kettle 6进行大量数据并行抽取时,偶尔会出现「Unknown error in KarafBlueprintWatcher」的错误,详细的报错信息可以查看下面的代码块. ERROR: ...
- 大数据学习-2 认识Hadoop
一.什么是Hadoop? Hadoop可以简单的理解为一个数据存储和数据分析分布式系统.随着互联网的普及产生的数据是非常的庞大的,那么我们怎么去处理这么大量的数据呢?传统的单一计算机肯定是完成不了的, ...
- oracle中left join,right join,inner join的坑
本文主要是记录一下实际使用oracle中join查询遇到的坑 1.用到两张表,学生表和学年分数表,先建立 2.普通连接查询 INNER JOIN,查询每个学年有成绩的学生以及分数情况 LFET JOI ...
- 初学mysql 那些记不住的命令
修改密码: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html MySQL 5.7.6 之后: ALTER USER ...
- BarCodeUtile
package com.rscode.credits.util; import java.awt.image.BufferedImage; import java.io.ByteArrayOutput ...
- Java基于opencv实现图像数字识别(五)—投影法分割字符
Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...