【docker2】Dockerfile,部署


1.Dockerfile

在这里插入图片描述
镜像像程序,容器像进程,FROM:指定当前镜像基于哪个镜像,必填。

WORKDIR:指定接下来shell语句运行在哪个路径下,alpine镜像下肯定没有/app这个目录,自动创建。

COPY:将当前宿主机文件拷贝到镜像中去。ADD和COPY相似,都是可以从外面复制到镜像里面,COPY一般源地址是文件系统源地址,ADD源地址不光是文件系统还可以是一个URL,如果没有用到网络资源,用COPY就行。

RUN:构建容器时运行这脚本,当前工作目录就是/app。

CMD:指定整个容器启动起来运行脚本,运行完后整个容器生命周期结束(tail -f 阻塞式)。

ENTRYPOINT:和CMD一样指定容器启动起来的核心脚本,但既指定ENTRYPOINT又指定CMD,以哪个为准:ENTRYPOINT非json则以ENTRYPOINT为准,CMD无效,如果ENTRYPOINT和CMD都是json则ENTRYPOINT+CMD拼成一句shell。如下可以以json数组形式指定。
在这里插入图片描述
必须命名为Dockerfile
在这里插入图片描述
如下指定镜像名test,最后的点表示dockfile文件位于当前目录下
在这里插入图片描述
1.txt里面原本内容有123
在这里插入图片描述
EXPOSE:指定当前镜像暴露出的一个端口,比如nginx镜像中指定EXPOSE暴露80端口,暴露好处是通过docker run -P将80端口映射到本机的随机端口,docker run --network=host模式的话会将80端口直接绑定到本机的80端口。
在这里插入图片描述
在这里插入图片描述
VOLUME:指定映射文件,VOLUME /a/b把容器中的/a/b这个目录映射到了宿主机的一个目录下。

1.1 ENV

指定参数方式:第一个是ENV直接指定当前容器的环境变量,环境变量可以在docker run中-e指定,也可以在Dockerfile中ENV直接指定,A=10和A空格10都一样。

第二个是ARG(本身就是参数意思),ENV和ARG有个本质区别:ENV是构建时一直到运行时都一直生效的环境变量,是系统的环境变量,ARG则是一个构建参数,只有在构建(docker build)时才有效,真正运行时无效了。
在这里插入图片描述
在这里插入图片描述
如下b=11默认为11,构建时指定
在这里插入图片描述
在这里插入图片描述

1.2 LABEL

LABEL:对镜像没任何作用,只是标识,便于通过docker inspect指令找到这镜像
在这里插入图片描述
ONBUILD:接的参数可以是Dockerfile中其他任意参数
在这里插入图片描述
ONBUILD是当前镜像构建时候不会执行,基于当前镜像的镜像构建时候才会执行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.Docker部署

2.1 部署

在这里插入图片描述
1.复制server/as文件夹到部署服务器。
2.登陆Docker Hub服务器,输入用户名/密码:sudo docker login huangpu.azurecr.io
3.下载Docker到部署服务器,进入as文件夹下,运行:sudo sh pullAzure_mkroo.sh
4.进入as文件夹下,检查和修改每个子文件夹下rundocker.sh文件中的设置
在这里插入图片描述
5.进入as文件夹下,检查和修改每个.service文件中的设置
在这里插入图片描述

2.2 配置

在这里插入图片描述

2.3 运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 检查

以下验证前,保证服务器已经联网状态,相机已经通电联网:
1.验证docker是否开机启动?
sudo docker ps,出现下图5个Up,则说明5个docker正常启动
在这里插入图片描述
2.查看各个docker的工作log
以accessserver为例:sudo docker logs accessserver
3.查看accessserver的log也可以如下途径查看
方法一:
sudo docker exec –it accessserver /bin/bash 进入accessserver里
cd log
ls
cat [最新的log名字]
tail –f [最新的log名字]
方法二:
Home目录下
cd /accessserver/log/
ls
cat [最新的log名字]
tail –f [最新的log名字]
4.进入数据库方法
sudo docker exec –it accessmysql /bin/bash
mysql –uroot –ppassword;
use access_data;
select * from camera; 查看camera数据表信息,可以看到所有相机的信息
select * from shelf; 查看shelf数据表信息,可以查看到所有货架和相机的绑定关系
update shelf set camera_id=? where id=?; 修改货架绑定的相机
update camera set binding_status=0 where id=?; 将旧相机(坏掉的相机)解绑定,即绑定状态设置为0
update camera set binding_status=1 where id=?; 将新相机绑定状态设置为1

猜你喜欢

转载自blog.csdn.net/weixin_43435675/article/details/112427736