0 前言
此篇博客参考此b站视频完成,是一个有趣的小实践。
1 项目原址
准备工作:在github上下载一个zip压缩包
网址:恋爱倒计时静态网页
2 从0开始
2.1 创建项目文件夹并解压源项目等操作
root@master:/home/hqc# cd docker_learning/
root@master:/home/hqc/docker_learning# mkdir love-web
root@master:/home/hqc/docker_learning# ls
Dockerfile基础教程.pdf lesserror-lovestory.zip love-web
root@master:/home/hqc/docker_learning# unzip lesserror-lovestory.zip
Archive: lesserror-lovestory.zip
850065d4f6577417c539d2d1bd5f4a8512a8379c
creating: lesserror-lovestory/
inflating: lesserror-lovestory/README.md
inflating: lesserror-lovestory/lovestory.html
# 解压文件包
root@master:/home/hqc/docker_learning# ls
Dockerfile基础教程.pdf lesserror-lovestory lesserror-lovestory.zip love-web
root@master:/home/hqc/docker_learning# mv lesserror-lovestory love
# 将lesserror-lovestory 重命名为love方便操作
root@master:/home/hqc/docker_learning# ls
Dockerfile基础教程.pdf lesserror-lovestory.zip love love-web
root@master:/home/hqc/docker_learning# mv love love-web/
# 将源码文件夹移入项目文件夹
root@master:/home/hqc/docker_learning# ls
Dockerfile基础教程.pdf lesserror-lovestory.zip love-web
root@master:/home/hqc/docker_learning# cd love-web/
# 进入项目文件夹
2.2 编写Dockerfile文件
每句均加以详细说明
root@master:/home/hqc/docker_learning/love-web# vim Dockerfile
FROM nginx # 基于nginx最新版镜像进行制作,若之前未拉取过会进行拉取
LABEL maintainer="hqc mail:2790051454@qq.com>" # 非必要,写的是作者联系方式
RUN mkdir -p /love-web \
&& rm /etc/nginx/conf.d/default.conf # 应该是删除nginx中的配置文件(这两句指令都是在nginx中进行操作)
copy ./love/* /love-web/ # 将源码文件夹中的所有文件复制到项目文件夹(./代表在当前目录下)
copy love-ui.conf /etc/nginx/conf.d/default.conf # 将前端ui配置文件作为默认配置文件供前端访问
expose 80 # 暴露80端口(nginx一般端口都是80)
RUN /bin/bash -c 'echo init ok' # 运行,并打印自定义信息
2.3 编写网页UI配置文件
root@master:/home/hqc/docker_learning/love-web# vim love-ui.conf
server {
listen 80;# 监听80端口
location / { # 匹配文件路径
root /love-web/;# 源码文件存放于root目录下的/love-web文件家路径下
index lovestory.html; # 源码文件
}
}
root@master:/home/hqc/docker_learning/love-web# ls
Dockerfile love love-ui.conf
2.4 创建镜像
注意打好标签版本等信息
root@master:/home/hqc/docker_learning/love-web# docker build -t love-web:v1.0 .
# 一定注意这条命令最后的.号
Sending build context to Docker daemon 9.216kB
Step 1/7 : FROM nginx
---> ea335eea17ab
Step 2/7 : LABEL maintainer="hqc mail:2790051454@qq.com>"
---> Running in b52a15fe34f9
Removing intermediate container b52a15fe34f9
---> 64209cf11e63
Step 3/7 : RUN mkdir -p /love-web && rm /etc/nginx/conf.d/default.conf
---> Running in d8f6e2135546
Removing intermediate container d8f6e2135546
---> 7f76ec448b61
Step 4/7 : copy ./love/* /love-web/
---> 57aacfd07403
Step 5/7 : copy love-ui.conf /etc/nginx/conf.d/default.conf
---> 322838767e27
Step 6/7 : expose 80
---> Running in c0b8f67f130b
Removing intermediate container c0b8f67f130b
---> c8fb4c2f3a95
Step 7/7 : RUN /bin/bash -c 'echo init ok'
---> Running in 9dfe7d092059
init ok
Removing intermediate container 9dfe7d092059
---> e0be19d59ea5
Successfully built e0be19d59ea5 # 最终容器ID
Successfully tagged love-web:v1.0
root@master:/home/hqc/docker_learning/love-web# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
love-web v1.0 e0be19d59ea5 56 seconds ago 141MB
nginx latest ea335eea17ab 47 hours ago 141MB
2.5 运行镜像
注意映射的端口不得重复,或者将之前映射的端口关闭即可再次使用
root@master:/home/hqc/docker_learning/love-web# docker run -d -p 0408:80 love-web:v1.0
ab910a423e8fdd40067edb8833195e5aaf701330c36f318e6b6859c70408fb67
docker: Error response from daemon: driver failed programming external connectivity on endpoint amazing_swartz (00fb05f60e378bafab2d918e75c6d7e8f328b667afb4407b955be8843c2a1223): Bind for 0.0.0.0:408 failed: port is already allocated.
# 这里报错是因为前面验证nginx时已经将0408端口映射过了,因此无法重复映射
root@master:/home/hqc/docker_learning/love-web# docker run -d -p 1008:80 love-web:v1.0
689f30cb167fbd52435bcb0972b3f92ef5865e3d063ccfb6c66e2e5011e24fe7
# 更换端口号之后便成功了!
3 访问验证
ifconfig
查询该网络的IP地址,并加上映射的端口号便可以访问了。
成功!!!