ubuntu利用docker部署jar包项目,包含mysql部署
一、 部署mysql
1.1. 拉取mysql镜像,这里用的网易的镜像( https://c.163yun.com/hub#/m/home/)
sudo docker pull hub.c.163.com/library/mysql:latest
1.2. 创建并运行mysql容器
sudo docker run -itd --name mysql -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
带启动参数,比如设置数据库大小写不敏感
sudo docker run -d -p 33060:3306 -e MYSQL_USER='koyanagi' -e MYSQL_PASSWORD='123456' -e MYSQL_ROOT_PASSWORD='123456' --name mysql_name mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci --lower_case_table_names=1
同步容器时间与宿主机时间
sudo docker cp -L /usr/share/zoneinfo/Asia/Shanghai mysql_name:/etc/localtime
- –name 后面跟容器名,随意
- -p 后面跟宿主机端口:容器里mysql用端口(一般3306),指将容器里mysql用的3306端口映射到宿主机端口,宿主机端口随意一个空闲端口就行
- MYSQL_ROOT_PASSWORD 后面跟mysql root的密码,自己设置
1.3. 通过Navicat等工具连接数据库,连接地址为宿主机ip:上一步设置的宿主机端口,账号root,密码上一步为设置的密码。例如:
注: docker拉的mysql镜像一般不是完整版,可能会缺少部分常用shell命令
二、部署java项目
2.1. 在java项目里设置mysql的访问链接为上一步的链接,即例子的 192.168.137.4:3305,账号root密码同上一步所设置
2.2. 利用Maven的package工具打包项目为jar包,放在ubuntu下的任意文件夹
2.3. 在同一文件夹下新建Dockerfile
sudo touch Dockerfile
2.4. 编写Dockerfile
例子:
FROM java:8
MAINTAINER liuzehong
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
ADD koyanagi_back-1.0.0.jar koyanagi_back.jar
EXPOSE 9000
ENTRYPOINT ["java","-jar","koyanagi_back.jar"]
详细参数: https://blog.csdn.net/qq_29999343/article/details/78318397
2.5. 制作镜像
sudo docker build -t koyanagi-back:1.0 .
注:koyanagi-back为自己起的镜像名,1.0为版本号,最后的 . 表示在当前路径下制作镜像
2.6. 利用镜像创建并运行容器
sudo docker run -p 9000:9000 -d --name koyanagi_back koyanagi-back:1.0
这里的格式同上面的mysql容器
如果项目中涉及访问宿主机文件资源(即上传并保存文件到服务器之类的,不应保存在容器里),可通过路径挂载的方式进行访问
sudo docker run -p 9000:9000 -d --name koyanagi_back -v /home/uploadPath/:/home/uploadPath koyanagi-back:1.0
冒号前为宿主机路径,冒号后为容器内路径
注:如果你的jar包里用的数据库链接为localhost,那么在run后面还需加一条–net=host,这样以后容器里的localhost就是宿主机里的localhost了,可以访问宿主机的mysql。详见:https://www.cnblogs.com/gispathfinder/p/5871043.html
输入命令:
sudo docker ps
查看容器是否运行成功。到浏览器里访问,例如例子就访问192.168.137.4:9000