docker项目部署流程:
1.编写dockerfile
FROM 基础镜像名(centos最后版本,或者自定义镜像)
USER root(根据项目需求,此处自己的启动脚本含有部分安装操作需要root权限)
ADD ./src/compress/项目压缩包 /usr/local/src (此处dockerfile位置和src目录在一层,压缩包拷贝至容器内部)
RUN unzip /usr/local/src/项目压缩包 -d /data/im/xxx/soft(此处容器内解压压缩包,查阅资料说ADD可以自动解压,tar没问题,此处压缩包用的zip格式,容器内并未解压,因基础镜像含unzip命令,故手动解压)
WORKDIR /data/im/xxx/soft/项目服务名(确定工作目录,目录位置即容器进入时位置)
EXPOSE 10432 58000/udp(开放端口,个人感觉象征意义上打开,实际打开端口在容器启动时映射)
ENTRYPOINT ["sh", "server_start.sh"](运行启动脚本)
2.构建镜像所需文件结构如下:
├── 更新说明.md
├── Dockerfile
├── 使用说明.md
└── src
└── compress
└── 项目压缩包
3.构建镜像命令:
docker build -t 镜像名:Tag号 .
4.运行容器命令:
端口映射方式启动:
docker run -p 0.0.0.0:10432:10432 -p 0.0.0.0:58000:58000/udp -itd 镜像名:Tag号 /bin/bash
其中-itd中d含义为挂载后台,直接启动不需要加d
net方式启动:
docker run --net=host -it 镜像名:Tag号 /bin/bash
5.进入容器命令:
进入容器:
docker exec -it 容器id /bin/bash
6.查看容器日志命令:
查看容器日志:
docker logs -f --tail 10 容器id
注意:上面dockerfile中基础镜像是已经构建好的镜像,直接from基础镜像类似于centos7(阉割版)会缺少很多启动脚本所需命令,基础镜像dockerfile安装如下,但是会导致构建的镜像过大
FROM centos:7
WORKDIR /项目服务名
COPY . /项目服务名
EXPOSE 10432 58000/udp
RUN yum -y install crontabs (启动脚本含定时任务)
RUN crontab <<< '# new crontab'
RUN yum -y install vim
RUN yum -y install net-tools
RUN yum -y install wget
RUN cd /usr/local/ && mkdir node
RUN wget https://npm.taobao.org/mirrors/node/v8.9.3/node-v8.9.3-linux-x64.tar.gz
RUN mv node-v8.9.3-linux-x64.tar.gz /usr/local/node/ && ls
RUN cd /usr/local/node/ && tar -xzvf node-v8.9.3-linux-x64.tar.gz && ls
RUN ln -s /usr/local/node/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node
RUN ln -s /usr/local/node/node-v8.9.3-linux-x64/bin/npm /usr/local/bin/npm
CMD ["node","-v"]
RUN yum install -y unzip zip
RUN unzip forever.zip -d /usr/lib/node_modules/
RUN ln -s /usr/lib/node_modules/forever/bin/forever /usr/bin/forever
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["sh", "server_start.sh"]