Docker 部署SrpingBoot + mysql到linux
1、拉取mysql镜像,运行容器。
docker pull mysql
– 拉取mysql镜像
docker run --name=mysql -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
启动mysql实例
–name:指定了容器的名称,方便之后进入容器的命令行
-itd:其中,i是交互式操作,t是一个终端,d指的是在后台运行
-p:指在本地生成一个随机端口,用来映射mysql的3306端口
-e:设置环境变量
MYSQL_ROOT_PASSWORD=root:指定了mysql的root密码
mysql:指运行mysql镜像
docker exec -it mysql_id /bin/bash 通过指定id来进入mysql容器。
mysql -u root -p 登录mysql
2、导入sql数据
Docker 中 MySQL 数据的导入导出
导出:
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
导入:
docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
导入指定宿主机路径的sql文件。
3、用navicat 进行远程连接测试
-
如果用navicat链接远程服务器报1251错误,要求你升级navicat版本,则到docker中执行以下操作
-
首先进入容器
docker exec -it mysql /bin/bash
-
进入mysql
mysql -uroot -p
-
授权登陆
GRANT ALL ON *.* TO 'root'@'%';
-
刷新权限
flush privileges;
-
更新加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
-
更新root用户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
-
刷新权限
flush privileges;
4、将springboot项目打成jar包。
测试springboot在本地启动无误后。cmd切换到项目所在目录。
执行命令:
mvn clean
清除之前版本
mvn package
打包
5、定义springBoot中Dockerfile
在项目根目录下新建Dockerfile文件。
FROM openjdk:8-alpine
VOLUME /tmp
COPY target/Statistics-0.0.1-SNAPSHOT.jar /Statistics-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT [“java”,"-jar","/Statistics-0.0.1-SNAPSHOT.jar"]
- from 指定了springboot的运行环境,为linux版本下jdk8。
- volume 指定了容器的挂载点。即容器的某个目录直接映射到宿主机的某个目录。相当于该目录挂载在宿主机上。
- copy 将宿主机上的jar文件复制到docker容器中。
- 暴露容器的8080端口。
- entrypoint 即相当于在linux下执行 java -jar命令。运行jar包。
6、构建docker 镜像
在项目根目录下执行命令:
docker build -t wqztmx4/springboot-statistics .
- wqztmx4/springboot-statistics 是建议镜像名称。其中wqztmx4为docker hub用户名。斜线后面为打包项目的名称。
- 最后有一个空格后,还有一个点,表示本目录。不要忘记。
7、推送到docker hub
- 首先登陆docker hub。没有账号,需要先注册一个。
docker login
- 推送镜像
docker push wqztmx4/springboot-statistics
docker push 后加镜像名称。等待上传完毕即可。
8、部署到linux服务器上。
- 首先删除linux上已有的镜像。
docker rmi -f wqztmx4/springboot-statistics
- 直接执行springboot。docker会自动重新拉取镜像。
docker run --name statistics -it -d -p 8080:8080 wqztmx4/springboot-statistics