记一次容器编排
前言
老师丢了一个spring写的项目给我们部署到服务器上。这次来记录一下部署的过程。
分析项目
这是一个spring的项目,没用到springboot,只能用tomcat部署了。因为还用到了MySQL连接,所以还需要一个MySQL的容器。知道了需要的容器那就开始行动了。
构建好大概框架
创建一个项目的文件夹
1
2mkdir math
cd math创建一个放Tomcat配置的文件夹
1
mkdir webapp
创建一个放MySQL配置的文件夹
1
mkdir database
创建一个
docker-compose.yml
的配置文件1
touch docker-compose.yml
Tomcat容器
因为这个项目打包出来是war包的,所以我想的就是直接将war包放到Tomcat的webapps里然后运行Tomcat就好了。(以下操作是在webapp文件夹进行)
注意设置项目中连接mysql的url,ip填写为mysql(其他也行,后面自己改服务名)<\br> localhost是指Tomcat容器的IP,因为容器与容器是隔离的,所以会连接不到MySQL容器的IP。
将改好的项目war包移入服务器的这个文件夹中。
定制Tomcat的镜像,创建一个
Dockerfile
文件。1
2
3
4
5
6
7
8
9FROM tomcat:9.0
LABEL maintainer = "yww <1141950370@qq.com>"
# 暴露端口
EXPOSE 9010
# 将war包放入Tomcat容器的webapps文件夹中
ADD math.war /usr/local/tomcat/webapps/
MySQL容器
这个容器才是这次的重点,因为要导入自己的sql语句,所以需要额外的shell脚本来实现。(以下操作是在database文件夹进行)
将sql文件移入这个文件夹,我的文件名是
mathStock.sql
。定制MySQL的镜像,创建一个
Dockerfile
文件。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21FROM mysql:8.0
LABEL maintainer = "yww <1141950370@qq.com>"
# 设置mysql的工作位置
ENV WORK_PATH /usr/local/
#定义会被容器自动执行的目录和所需文件的环境变量
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
ENV SQLFILE mathStock.sql
ENV INSTALL_DATA_SHELL setup.sh
# 将需要的文件放入容器内
COPY ./$SQLFILE $WORK_PATH/
COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/
# 给shell脚本和自动执行目录增加可执行的权限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL
#设置容器启动时执行的命令
CMD ["sh", "/docker-entrypoint-initdb.d/import.sh"]创建一个shell脚本用于导入sql文件,我的文件名是
setup.sh
1
2
3!/bin/bash
mysql -uroot -ppassword <<EOF
source /usr/local/mathStock.sql;
容器编排docker-compose.yml
1 | # 版本需要选对,不然报错 |
运行
编排完之后就可以运行了。
1 | docker-compose up -d |
参考文章
评论