【Docker】自定义dockerfile构建容器镜像并发布

这篇博客介绍了如何通过Docker将一个恋爱倒计时的静态网页项目部署到Nginx服务器。首先,从GitHub下载项目源码,然后创建Dockerfile,配置Nginx并将源码复制到容器内。接着,编写前端UI配置文件以指定网页路径。通过Docker build命令创建镜像,并指定标签为v1.0。在运行镜像时,由于端口冲突,需要更换端口映射。最后,访问验证确认网页成功部署。
摘要由CSDN通过智能技术生成

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地址,并加上映射的端口号便可以访问了。
在这里插入图片描述
成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值