项目环境部署手册
1.Dockerfile 编写相关命令
From XXX(基于什么镜像) 必须声明!!!! 在联网环境,可以使用如,docker search java 查找
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的:姓名+邮箱 建议跟在FROM后边, 跟label配合使用
形如: LABEL maintainer=“nineya” 一般不写~~~
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤:tomcat镜像、这个tomcat压缩包!添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
CMD [“echo”,”aa”] # 指定容器启动的时候需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定容器启动的时候需要运行的命令,可以追加指令 [“”java”,”-jar”,”xx”]
ONBUILD # 当构建一个被继承 DckerFile 这个时候就会运行 ONBUILD 的指令 触发指令
COPY # 类似ADD 将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量
2.Dockerfile 编写示例
注:建议在联网的电脑上打镜像
示例一:
示例二:
FROM registry.cn-beijing.aliyuncs.com/hub-mirrors/openjdk:8-jdk-alpine
WORKDIR dky
ADD dky-experiment.jar app.jar
EXPOSE 28828
CMD [“java”,“-jar”,“app.jar”]
3.通过Dockerfile制作自定义镜像
在Dockerfile的同级目录下,使用以下命令
docker build -t server:1.0.0 .
注:最后的 ”. ” 不要忘记
如图,通过Dockerfile 推送镜像
4.通过镜像打成tar包
1.查看镜像
docker images
2.通过 docker save -o ${tar文件名称} ${ 镜像REPOSITORY:TAG}
例如:docker save -o dky.tar dky-server:1.0.0
注:默认tar包在当前目录
5、检查服务器是否有JDK环境(已有可忽略)
检查服务器是否已经装JDK
输入 java -version
若没有JDK,需安装JDK
上传linux 版JDK,如创建/usr/java 文件夹,将jdk-8u144-linux-x64.tar.gz 导入
输入 tar -xvf jdk-8u144-linux-x64.tar.gz 解压文件
输入: vi /etc/profile
在最后一行加入
export JAVA_HOME=/usr/java/jdk1.8.0_144
export CLASSPATH=
:
C
L
A
S
S
P
A
T
H
:
:CLASSPATH:
:CLASSPATH:JAVA_HOME/lib/
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
保存退出,刷新配置
source /etc/profile
Java -version 查看是否成功
6、docker环境安装
docker离线包下载地址:https://download.docker.com/linux/static/stable/x86_64/
(1)检查服务器是否已经安装docker环境,在ssh工具中输入: docker -v ,如果输出以下内容表示docker环境已经安装,可以跳过这一步骤
(2)将附件包中docker-20.10.17.tgz上传至服务器中
(3)使用cd 命令进入安装包所在的目录
(4)使用命令 tar -zxvf docker-20.10.17.tgz 解压安装包
(5)cd docker 进入解压后的文件夹
(6)运行 nohup dockerd & 启动docker服务,出现如下所示内容后使用ctrl + c退出命令
如果报错: 在 /etc/profile中加入路径
vim /etc/profile
在合适的位置加入,如下参数
export PATH=$PATH:/opt/docker
在执行刷新配置:
source /etc/profile
(7)重复第(1)步,检查环境是否安装成功。安装成功后输入docker images命令应该出现以下输出:
配置docker.service, 让离线包docker,成为系统应用
vim /etc/systemd/system/docker.service
在docker.service 中添加如下内容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd 注:此处的dockerd改为离线包解压后那个文件夹
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
给文件增加可执行权限
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
设置docker 服务开机启动
systemctl enable docker.service
启动docker
systemctl start docker
设置容器开机自启
docker update --restart=always 容器id 或 容器名称
7、mysql安装(已有可忽略)
(1)将附件包中mysql.tar上传至服务器
(2)cd到tar包同级目录;
(3)使用 docker load -i mysql.tar 命令将mysql镜像导入docker中,出现如下内容表示导入成功:
导入成功后使用docker images命令可以查看到导入的mysql镜像
此时仓库和tag都未none,为了方便可以使用docker tag {替换image id} mysql:5.7来给镜像打上标签,完成后镜像变成这样
(4)在服务器中创建一个文件夹用于存放数据库数据,例如:/opt/data
(5)使用如下命令启动mysql容器:
docker run --name mysql -d -p 33061:3306 -e MYSQL_ROOT_PASSWORD=1qaz@WSX -v /opt/data:/var/lib/mysql mysql:5.7
上面命令将容器的3306端口映射到服务器的33061端口上,root的初始密码被设置为1qaz@WSX。
(6)使用docker ps -a 可以查看到当前正在运行的docker镜像
可以看到,mysql容器已经启动了。可以使用数据库连接工具使用服务器ip:33061去连接检查是否正常运行
8、redis安装
(1)将附件包中redis.tar文件上传的服务器对应位置;
(2)进入文件统同级目录
(3)docker load -i redis.tar导入redis镜像
(4)docker images 查看镜像是否成功导入
(5)复制image id,修改镜像tag
(6)复制附件包中redis.conf文件到服务器,并创建redis数据存放文件夹例如:/opt/redis-data
(7)使用命令启动redis容器
docker run -p 16379:6379 --name redis -v {替换成实际redis.conf地址}:/etc/redis/redis.conf -v {替换成实际存储地址}:/data -d redis:6.0 redis-server /etc/redis/redis.conf
(8)检查redis容器是否启动,docker ps -a 看到如下即可
9、minio安装
(1)将附件包中minio.tar上传到服务器中,并进入同级目录
(2)使用docker load -i minio.tar 将镜像导入容器中
(3)docker images 查看导入的镜像的image id
(4)重新tag镜像 docker tag {替换上一步中的images ${id} minio:latest
(5)Docker images查看minio镜像
(6)创建minio文件存储文件夹,例如/home/minio/data
(7)使用命令启动容器
docker run -p 19000:9000 -p 19090:9090 --name minio -d --restart=always -e “MINIO_ACCESS_KEY=minioadmin” -e “MINIO_SECRET_KEY=minioadmin” -v /home/minio/data:/data -d minio server /data --console-address “:9090” -address “:9000”
(8)检查minio启动情况:docker ps -a 出现如下:
或者浏览器访问 服务器ip:19090 查看页面是否可以访问
10、onlyoffice安装
(1)将附件包中onlyoffice.tar上传至服务器中,并进入同级目录
(2)将镜像导入docker中 docker load -i onlyoffice.tar
(3)创建数据存储文件夹
/home/onlyoffice/documentServer/logs
/home/onlyoffice/documentServer/data
/home/onlyoffice/documentServer/lib
/home/onlyoffice/documentServer/db
(4)使用命令启动容器
docker run -itd -p 19797:443 -p 19696:80 --restart=always --name onlyoffice -v /home/onlyoffice/documentServer/logs:/var/log/onlyoffice -v /home/onlyoffice/documentServer/data:/var/www/onlyoffice/Data -v /home/onlyoffice/documentServer/lib:/var/lib/onlyoffice -v /home/onlyoffice/documentServer/db:/var/lib/postgresql onlyoffice/documentserver
(5)检查容器启动情况docker ps
浏览器访问 服务器ip:19696 显示如下页面则表示启动成功
11、前端部署
将前端打好的 tar包,导入服务器中
进入tar所在文件夹
运行命令:docker load -i dky-web.tar
注:dky-web.tar 替换为所部署项目的tar包
运行启动容器
docker run -d -p 19012:9012 dky-web-tx:1.0.4
注:A. 19012为开通的前端端口,可替换为所部署项目开通的端口
B. dky-web-tx:1.0.4 为前端包镜像,可替换为所部署项目镜像
检查是否启动成功
访问前端页面
12、后端部署
部署后端代码前,先检查后端服务,数据库是否创建,可通过Navicat等数据库连接工具 连接mysql (步骤三安装mysql)查看后端代码所需数据库是否创建,若无数据库则需创建
1、连接数据库 将项目中数据库sql 文件导入
2、部署后端代码
将后端tar 包导入服务器中
在项目tar包所在文件下,运行命令:docker load -i dky-server.tar
注:dky-server.tar 替换为所部署项目tar包
启动docker 容器
docker run -d -p 28828:28828 dky-server-tx:1.0.3
注:A. 28828为开通的后端端口,可替换为所部署项目开通的端口
C. dky-web-tx:1.0.4 为后端包镜像,可替换为所部署项目镜像
注意,上述所有涉及到端口都需要开放防火墙