- 需要先安装过docker,文章没有讲dockerfile ,docker-compose的相关命令,直接是能使用的实例。
1.dockerfile 概念及使用
1.1使用dockerfile部署MySQL
注意点:1. 从镜像中拉去MySQL后MySQL密码的问题
2. MySQL的如何执行sql文件
3. MySQL创建数据库的中文乱码问题
1.1第一种方式
FROM hub.c.163.com/library/mysql:5.7
#修改编码方式
RUN echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf
RUN service mysql restart
EXPOSE 3306
到Dockerfile所在文件夹,执行,不要忘记最后一个点号
docker build -t my/mysql:v1 .
docker run --name mymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d my/mysql:v1
第一种方式构建的时候密码问题通过 docker run的时候来解决,处理注意点2与3可以利用MySQL客户端sqlyog之类的远程连接上后再操作;如下图 手动创建数据库,指定字符集以及校对规则。
1.2参考 在构建镜像的时候执行sql文件
(这个例子为若依开源项目的)可以在构建镜像的时候执行了sql脚本
# 基础镜像
FROM mysql:5.7
# author
MAINTAINER ruoyi
# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/
1.3 docker-compose.yml里面指定字符集以及数据库校对规则
rose-mysql:
container_name: sr-mysql
image: mysql:5.7
build:
context: ./mysql
ports:
- "3306:3306"
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/logs:/logs
- ./mysql/data:/var/lib/mysql
command: [
'mysqld',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
仅使用dockerfile的话建议选择第一种,执行sql文件的时候再使用远程连接的客户端
使用docker-compose 的话使用1.3
1.4 常用命令
#进入容器
sudo docker exec -it 775c7c9ee1e1 /bin/bash
#启动容器
docker start [容器别名|容器id]
#重启容器
docker restart [容器别名|容器id]
#停止容器
docker stop [容器别名|容器id]
#删除容器
docker rm [容器别名|容器id]
#安装vim
apt-get update
apt-get install vim
2 docker-compose的使用
使用docker-compose可以方便的管理docker容器;
如下‘一行命令可以管理很多个容器’。第一次使用docker-compose up -d 会创建镜像并启动
# 启动程序模块
docker-compose up -d sr-gateway sr-auth sr-modules-system
# 关闭所有环境/模块
docker-compose stop
# 删除所有环境/模块
docker-compose rm
2.1 先安装docker-compose
#安装docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version
2.2 若依分布式项目
项目地址如下
https://gitee.com/y_project/RuoYi-Cloud 里面相关docker脚本自行下载 计划先装上MySQL,nacos,nginx,redis还有启动相关的微服务
2.2.1 安装MySQL
上面已经提过MySQL的安装方法;
2.2.2 安装nacos;
- 安装nacos depends_on要和下图这个文件里面db.url.0 填到的变量对应起来
- 需要提前吧nacos需要的数据库配置导入
rose-nacos:
container_name: sr-nacos
image: nacos/nacos-server
build:
context: ./nacos
environment:
- MODE=standalone
volumes:
- ./nacos/logs/:/home/nacos/logs
- ./nacos/conf/application.properties:/home/nacos/conf/application.properties
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
depends_on:
- rose-mysql
2.2.3 安装nginx
需要注意的地方有两处:
1 .try_files $uri $uri/ /index.html;
因为前端项目是vue项目路由采用的history模式,如果不在nginx里面配置这个 就会出现刷新之后页面不能显示的情况;
2. proxy_pass http://rose-gateway:8080/; rose-gateway配置的是容器名
location / {
root /home/rose/projects/sr-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://rose-gateway:8080/;
}
2.2.4 安装其他微服务模块
注意点:
1.将项目中注册nacos地址的地方在打包前一定要改成虚拟机或者服务器地址;
在bootstrap.yml里面修改
2.所有出现的localhost 或者127.0.0.1 请改成服务器地址或者虚拟机地址
比如redis的地址 在nacos里面编辑用的服务的相关配置
3.注意微服务里面的日志。docker实例中没有挂载日志;
#compose文件
volumes:
- ./rose/logs:/home/rose/logs
这样,就可以在容器外部看到日志了
4.最终部署后成果
docker ps
最后:补充下删除docker镜像的命令 docker rmi [镜像id] 练手的路上肯定会用好几次;