参考文章https://www.jb51.net/article/146308.htm
看上面的文章先拉取了一个centos的镜像,尝试之后,安装mysql 有各种问题,所以直接拉一个mysql的镜像 在这个上面搞,因为直接拉取的mysql镜像 所以mysql 都是安装好的
1:mysql 拉取一个mysql镜像
docker pull mysql:5.7
查看镜像
docker images
根据镜像启动容器
docker run --name mysql57 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
查看容器
docker ps
接下来 进入容器 安装环境和应用
docker exec -it 容器ID bash
安装redis
apt install redis
安装jdk 从官网下载 linux的jdk 安装包
从容器内返回 返回的命令返回是快捷键 ctrl+p ctrl+q 摁这两个 可以离开容器
回到宿主机 使用cp命令把jdk安装包拷贝到容器内
docker cp /www/wwwroot/jdk-8u321-linux-x64.tar 容器ID:/usr/local/java/
再次进入容器 进入/usr/local/java/目录
cd /usr/local/java/
使用tar 解压jdk
tar zxvf jdk-8u321-linux-x64.tar
这样jdk 就安装好了 因为想省事 不设置环境变量了 执行的时候 直接带目录运行jar
安装nginx
apt install nginx
这样 jdk mysql nginx 都安装好了
离开容器 使用cp命令把springboot 打包好的项目 拷贝应用到容器内
docker cp /www/wwwroot/zcgl 容器ID:/opt
进入容器 修改yml 因为镜像内部没有vi命令 先安装 vi命令
apt-get install vim-gtk
启动spring boot项目
/usr/local/java/jdk1.8.0_321/bin/java -jar /opt/zcgl/xx.jar
就可以启动我们的java应用了 我这里遇到几个问题
1:默认mysql 对大小写敏感
需要修改配置文件 配置文件的位置 在 使用vi修改 /etc/mysql/conf.d/mysql.cnf
vi /etc/mysql/conf.d/mysql.cnf
增加配置项目
2:初始化数据库 直接用Navicat连接数据库执行脚本即可
接下来部署vue项目 找到 nginx配置文件 按照需求修改
vi /etc/nginx/sites-enabled/default
我修改了目录和反向代理和vue404 的问题
复制vue打包好的项目到 容器内
docker cp /www/wwwroot/c.com 容器ID:/var/www/
到这里 我们的环境部署就完成了 但是启动容器的时候 我们只能启动mysql 不能启动 redis 、nginx 和我们的java应用,试了一下直接在容器内增加开机启动,没有解决 好在docker 可以把启动命令里面打包到镜像
1:先把当前项目打包成镜像
#停掉容器
docker stop 容器ID
#查看容器id
docker ps -a
#容器打包成镜像
docker commit -m '镜像名称' 容器ID 镜像名称:1
#查看镜像
docker images
编写启动命令
#!/bin/bash
sleep 1
service redis-server start
service nginx start
nohup /usr/local/java/jdk1.8.0_321/bin/java -jar /opt/zcgl/xxx.jar &
创建Dockerfile文件
vi Dockerfile
写入内容 把需要启动的内容写入到脚本内
FROM 镜像名称:1
COPY start.sh /root/start.sh
RUN chmod +x /root/start.sh
WORKDIR /root
ENTRYPOINT /root/start.sh && tail -f /dev/null
创建镜像
docker build -t 镜像名称:2 .
启动镜像 接下来就看到我们的应用就完美运行了