赞
踩
1.Docker安装
//下载containerd.io包
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
//安装依赖项
yum install -y yum-utils device-mapper-persistent-data lvm2
//设置镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//安装docker
yum install -y docker-ce
//安装docker-compose 下载很慢
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
二、查看版本信息
//文件授权
chmod +x /usr/local/bin/docker-compose
//查看docker版本
docker version
//查看docker-compose版本
docker-compose --version
1、创建目录文件夹
//进入home目录
cd /home
//创建工作目录
mkdir lory
//进入lory目录
cd lory
//创建conf文件夹 用来存放redis.conf和nginx.conf配置文件
mkdir conf
//创建db文件夹 用来存放数据库初始化脚本
mkdir db
//创建jar文件 用来存放jar包
mkdir jar
//创建html文件 用来存放前端编译文件
mkdir html
2、将jar包、dist文件、sql脚本通过xftp上传到服务器对应文件夹,打包时记得将前后端数据库和redis改成服务器ip
2、编写dockerfile
a.编写mysql-dockerfile
//进入lory文件夹
cd /home/lory
//查看mysql-dockerfile文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim mysql-dockerfile
# 基础镜像
FROM mysql:5.7
# author
MAINTAINER lory
# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/
b.编写nginx-dockerfile
主要功能是在容器内创建 /home/projects/front目录,并将该目录与宿主机挂载
//进入lory文件夹
cd /home/lory
//查看nginx-dockerfile文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim nginx-dockerfile
# 基础镜像
FROM nginx
# author
MAINTAINER lory
# 挂载目录
VOLUME /home/projects/front
# 创建目录
RUN mkdir -p /home/projects/front
# 指定路径
WORKDIR /home/projects/front
# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./html/dist /home/projects/front
c.编写redis-dockerfile
主要功能是在容器内创建 /home/projects/redis目录,并将该目录与宿主机挂载
//进入lory文件夹
cd /home/lory
//查看redis-dockerfile文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim redis-dockerfile
# 基础镜像
FROM redis
# author
MAINTAINER lory
# 挂载目录
VOLUME /home/projects/redis
# 创建目录
RUN mkdir -p /home/projects/redis
# 指定路径
WORKDIR /home/projects/redis
# 复制conf文件到路径
COPY ./conf/redis.conf /home/projects/redis/redis.conf
d.编写purchase-dockerfile (xxx-dockerfile:xxx可以随便取到时候对应上其他配置文件就行)
主要功能是在容器内创建 /home/projects/jar目录,并执行jar包
//进入lory文件夹
cd /home/lory
//查看redis-dockerfile文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim purchase-dockerfile
# 基础镜像
FROM openjdk:8
# author
MAINTAINER lory
# 挂载目录
VOLUME /home/projects/jar
# 创建目录
RUN mkdir -p /home/projects/jar
# 指定路径
WORKDIR /home/projects/jar
# 复制jar文件到路径
COPY ./jar/*.jar /home/projects/jar/purchase-admin.jar
# 启动应用
ENTRYPOINT ["java","-jar","purchase-admin.jar"]
e、编写docker-compose.yml文件
//进入lory文件夹
cd /home/lory
//查看redis-dockerfile文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim docker-compose.yml
version : '3' services: mysql: container_name: mysql image: mysql:5.7 build: context: . dockerfile: mysql-dockerfile 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' ] environment: MYSQL_DATABASE: 'purchase_system' #数据库 MYSQL_ROOT_PASSWORD: 123456 #数据库root用户密码 redis: container_name: redis image: redis build: context: . dockerfile: redis-dockerfile ports: - "6379:6379" volumes: - ./conf/redis.conf:/home/projects/redis/redis.conf #对应工作目录上的conf文件路径和redis-dockefile挂载目录路径 - ./redis/data:/data command: redis-server /home/projects/redis/redis.conf nginx: container_name: nginx image: nginx build: context: . dockerfile: nginx-dockerfile ports: - "80:80" volumes: - ./html/dist:/home/projects/front #对应上工作目录和nginx-dockerfile挂载目录 - ./conf/nginx.conf:/etc/nginx/nginx.conf - ./nginx/logs:/var/log/nginx - ./nginx/conf.d:/etc/nginx/conf.d depends_on: - purchase-server links: - purchase-server purchase-server: container_name: purchase-server build: context: . dockerfile: purchase-dockerfile ports: - "9800:9800" volumes: - ./jar/purchase-admin.jar:/home/projects/server/purchase-admin.jar #对应上工作目录和purchase-dockerfile挂载目录 - ./purchase/logs:/home/projects/logs - ./home/uploadPath:/home/projects/uploadPath depends_on: - mysql - redis links: - mysql - redis
3、编写nginx.conf配置文件
//进入conf文件夹
cd /home/lory/conf
//查看 nginx.conf 文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /home/projects/front; #nginx-dockerfile挂载目录 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://purchase-server:9800/; #purchase-server为docker-compose.yml文件对应服务container_name } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
4、编写redis.conf配置文件
//进入conf文件夹
cd /home/lory/conf
//查看 redis.conf 文件后键盘输入i将下面文件输入进去后,摁键盘esc后输入:wq保存并退出
vim redis.conf
#解除本地限制 注释bind 127.0.0.1
#bind 127.0.0.1
#设置密码
#requirepass 123456
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no
#默认为no,redis持久化,可以改为yes
appendonly yes
写完后主要文件目录如下
如果使用tree命令提示:-bash: tree: command not found
安装一下即可
yum -y install tree
1、构建docker服务
//进入工作目录lory文件
cd /home/lory
//启动docker
systemctl start docker
//构建
docker-compose build
2、启动docker容器
docker-compose up -d
//如果后端jar启动失败多数是因为数据库初始化的时候太慢了,导致jar包没有连接成功,这个时候在执行一次docker-compose up -d即可
3、修改msyql可以远程连接
//查看容器
docker ps
//进入容器 mysql:容器名字NAME
docker exec -it mysql bash
连接数据库设置远程连接
//登陆数据库
mysql -u root -p
use mysql
//设置远程连接
update user set host = '%' where user = 'root';
//更改数据库密码这里password和user需要自己指定,host为%,很多网上的教程都是localhost,如果为localhost修改的是本地的密码,就是在进入到mysql容器里面登录时用的密码,而你在外部连接时的密码照样没修改。
UPDATE USER SET authentication_string=PASSWORD('123') WHERE USER='root' AND HOST='%';
//刷新权限
flush privileges;
//退出mysql
quit;
//退出容器
exit
如果报错:ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’ 说明已经设置了远程连接
最后就实现了使用docker一键部署前后端服务,后面更新jar包直接通过命令docker-compose build构建在通过docker-compose up -d 启动即可
页面部署成功界面:
docker扩展命令
//启动docker systemctl start docker //重启docker systemctl restart docker //关闭docker systemctl stop docker //进入容器 my_mysql:容器名字 docker exec -it my_mysql bash //构建docker服务 docker-compose build //启动所有docker容器 docker-compose up -d //命令查看服务的日志,purchase-server:要查看的服务名 docker-compose logs purchase-server //查看镜像 docker images //删除单个镜像 docker rmi 镜像id(IMAGE ID) //停止镜像 docker stop NAME //查看容器 docker ps //删除容器 docker rm container_name/container_id
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。