【CompanyName】表示公司名称需要替换为你自己的公司,【ProjectName】标识项目名称需要替换为你自己的项目名称。
Mysql DockerFile
FROM mysql:5.7.31
COPY ./sql /tmp/sql
RUN mv /tmp/sql/*.sql /docker-entrypoint-initdb.d
RUN rm -rf /tmp/sql
Tomcat DockerFile
注意需要将相关的软件包与DockerFile放在一起,主要的依赖分别为
FROM centos:7.8.2003
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& yum -y install kde-l10n-Chinese \
&& yum -y reinstall glibc-common \
&& localedef -c -f GB18030 -i zh_CN zh_CN.GB18030 \
&& echo 'LANG="zh_CN.GB18030"' > /etc/locale.conf \
&& source /etc/locale.conf \
&& yum clean all
ENV LANG=zh_CN.GB18030 \
LC_ALL=zh_CN.GB18030
# 创建一个文件夹用于存放jdk
RUN mkdir /【CompanyName】
RUN mkdir /【CompanyName】/java
# 安装jdk 将jdk压缩包拷贝到镜像当中 会自动解压
ADD jdk-8u251-linux-x64.tar.gz /【CompanyName】/java
# 创建一个软链接 相当于给这个路径创建一个别名
RUN ln -s /【CompanyName】/java/jdk1.8.0_251 /【CompanyName】/java/jdk
# 创建jdk环境变量
ENV JAVA_HOME /【CompanyName】/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
# 安装tomcat
RUN mkdir /【CompanyName】/tomcat
ADD apache-tomcat-8.5.57.tar.gz /【CompanyName】/tomcat
# 部署【ProjectName】
# COPY 【ProjectName】.war /【CompanyName】/tomcat/apache-tomcat-8.5.57/webapps
# 初始化文件上传目录
RUN mkdir /usr/【ProjectName】
RUN mkdir /usr/【ProjectName】/file
RUN chmod a+rwx /usr/【ProjectName】/
# 映射文件地址
VOLUME [ "/usr/【ProjectName】/file/", "/【CompanyName】/tomcat/apache-tomcat-8.5.57/webapps/"]
# 指定容器启动时执行的脚本
ENTRYPOINT [ "/【CompanyName】/tomcat/apache-tomcat-8.5.57/bin/catalina.sh", "run" ]
# EXPOSE 映射端口
EXPOSE 8080
根据DockerFile分别生成镜像
docker build -t="【ProjectName】-mysql" .
docker build -t="【ProjectName】-mis" .
将镜像导出为离线文件
docker save -o 【ProjectName】.mis.tar oams-mis
docker save -o 【ProjectName】.mysql.tar oams-mysql
部署材料
与该手册同时存在的还有以下文件:
- 【ProjectName】.war
- 【ProjectName】.mysql.tar
- 【ProjectName】.mis.tar
部署步骤
-
创建/var/【ProjectName】目录(windows服务器 目录 为d:/【ProjectName】),该目录下创建,file、mysql、tomcat三个文件夹 tomcat 下创建 webapps 文件夹,将【ProjectName】.war war包放到webapps目录下
-
创建数据库容器
// 恢复数据库镜像
docker load --input 【ProjectName】.mysql.tar
// 查看镜像是否恢复
docker images
// 应该可以看到【ProjectName】-mysql镜像
// 创建数据库容器(linux)
docker run --restart=always -dit -v /var/【ProjectName】/mysql:/var/lib/mysql -p 33009:3306 --name 【ProjectName】.mysql -e MYSQL_ROOT_PASSWORD=【CompanyName】2020123#@! -d --privileged=true 【ProjectName】-mysql --lower_case_table_names=1 --character_set_server=utf8
// 创建数据库容器(winserver)
docker run --restart=always -dit -v d:/【ProjectName】/mysql:/var/lib/mysql -p 33009:3306 --name 【ProjectName】.mysql -e MYSQL_ROOT_PASSWORD=【CompanyName】2020123#@! -d --privileged=true 【ProjectName】-mysql --lower_case_table_names=1 --character_set_server=utf8
- 创建应用系统容器
// 恢复应用镜像
docker load --input 【ProjectName】.mis.tar
// 查看镜像是否恢复
docker images
// 应该可以看到【ProjectName】-mis镜像
// 创建数据库容器(linux)
docker run -it --privileged=true -v /var/【ProjectName】/tomcat/webapps:/【CompanyName】/tomcat/apache-tomcat-8.5.57/webapps -p 8080:8080 --name 【ProjectName】.mis --link 【ProjectName】.mysql:db -d 【ProjectName】-mis /bin/bash
// 创建数据库容器(winserver)
docker run --restart=always -dit -v d:/【ProjectName】/mysql:/var/lib/mysql -p 33009:3306 --name 【ProjectName】.mysql -e MYSQL_ROOT_PASSWORD=【CompanyName】2020123#@! -d --privileged=true 【ProjectName】-mysql --lower_case_table_names=1 --character_set_server=utf8
- 部署结果
// 查看容器运行状况
docker ps -a
// 查看结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
efc9877784c7 【ProjectName】-mysql "docker-entrypoint.s…" 44 seconds ago Up 42 seconds 33060/tcp, 0.0.0.0:33009->3306/tcp 【ProjectName】.mysql
08c43d9a1b04 【ProjectName】-mis "/【CompanyName】/tomcat/apach…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp 【ProjectName】.mis
打开http://localhost:8080/【ProjectName】/地址查看
最后安利下自己的小程序,一款程序员刷题小程序。