1. 安装docker

Docker 要求 CentOS 系统的内核版本高于 3.10 ,首先验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
  1. 使用 yum 安装docker

    yum -y install docker

  1. 启动 Docker 服务

    systemctl start docker

  1. 设置开启启动

    systemctl enable docker

    4. 验证是否安装成功

    docker version

2. docker常用命令

  1. 启动已停止运行的容器:docker start ID
  2. 停止容器:docker stop <容器 ID>
  3. 重启容器:docker restart ID
  4. 删除容器:docker rm -f <容器 ID>
  5. 进入容器:docker exec -it 应用名 bash
  6. 查看运行的容器状态:docker ps
  7. 查看所有容器状态(包括未运行的):docker ps -a
  8. docker cp e0d9c2a11847:/var/lib/mysql /usr/local/ 将docker里面的文件复制出来
  9. 在docker中安装vim
    apt-get update
    apt-get install vim
    (说明:命令中的ID都可以用容器名称NAMES代替)

3. 安装mysql5.7并进行文件挂载

  1. 拉取mysql镜像
    docker pull mysql:5.7
  2. 启动测试mysql,复制配置文件到宿主机(先启动测试mysql,目的是为了将配置文件复制出来) 
    docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    配置文件必须要宿主已经存在,才能正常启动,所以创建文件夹,然后复制配置文件出来
    mkdir -p /opt/docker/mysql/conf
    docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /opt/docker/mysql/conf
    (注意:mysql5.7的默认配置文件不是/etc/my.cnf也不是/etc/mysql/my.cnf,而是/etc/mysql/mysql.conf.d/mysqld.cnf)
  3. 删除测试mysql,重新启动mysql,并挂载配置文件和data
    删除测试mysql
    docker rm -f mysql
    重新启动mysql
    docker run -d -p 3306:3306 --privileged=true --restart always -v /opt/docker/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /opt/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
参数说明:
run:运行一个容器
-d:表示后台运行
-p:表示容器内部端口和服务器端口映射关联
--privileged=true:设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
--restart always:设置开机启动
-v /opt/docker/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf:将宿主机中的mysqld.cnf配置映射到docker中的/etc/mysql/mysql.conf.d/mysqld.cnf
-v /opt/docker/mysql/data:/var/lib/mysql:同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
-e MYSQL_ROOT_PASSWORD=123456:设置MySQL数据库root用户的密码
--name mysql:设值容器名称为mysql
mysql:5.7:表示从docker镜像mysql:5.7中启动一个容器
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci:设值数据库默认编码和默认排序规则

4. 安装redis并进行文件挂载

  1. 拉取redis镜像
    docker pull redis
  2. 在宿主机中创建redis.conf配置文件
    创建配置文件路径
    mkdir -p /opt/docker/redis/conf
    将配置文件放到该目录下,配置文件根据自己的版本,自行到官网下载。如何查看自己的redis版本:进入redis容器,执行redis-server -v即可。
    附上官网配置文件地址:https://redis.io/topics/config
  3. 启动redis
    docker run -d --privileged=true -p 6379:6379 --restart always -v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/docker/redis/data:/data --name redis redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"
-d:以守护进程的方式启动容器
-p:绑定宿主机端口
--name myredis: 指定容器名称
--restart always:开机启动
--privileged=true:提升容器内权限
-v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件
-v /opt/docker/redis/data:/data:映射数据目录
redis-server /etc/redis/redis.conf:在容器里执行redis-server命令,以挂载的配置文件启动
--appendonly yes:打开redis持久化
--requirepass:密码
  4. 开启远程连接
    此时我们的redis虽然启动成功了,但是远程还无法连接。此时将/opt/docker/redis/conf/redis.conf文件中的bind 127.0.0.1注释掉。
正好验证下挂载的配置文件是否生效。然后重启redis,重启之后,如果能够进行远程连接,则说明大功告成。

5.安装nginx并进行文件挂载

  1. 拉取nginx镜像
    docker pull nginx:latest
  2. 启动测试nginx容器
    docker run --name nginx -p 80:80 -d nginx
    直接在浏览器输入宿主机的ip,出现如下界面,则说明启动成功
  3. 复制配置文件到宿主机
    先创建文件夹
    mkdir -p /opt/docker/nginx/{conf,conf.d,html,log}
    然后复制对应的配置文件到宿主机
    docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf
    docker cp nginx:/etc/nginx/conf.d/default.conf /opt/docker/nginx/conf.d
    docker cp nginx:/usr/share/nginx/html /opt/docker/nginx
  4. 启动nginx
    先删除测试的nginx容器
    docker rm -f mysql
    重新启动nginx
    docker run --name nginx -p 80:80 -v /opt/docker/nginx/html:/usr/share/nginx/html -v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker/nginx/log:/var/log/nginx -v /opt/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx

  5. 部署项目

    将打包好的前端项目放到/opt/docker/nginx/html,重启nginx即可。nginx配置文件具体细节这里就不讲了。
    最后启动springboot项目(注意别忘记安装jdk),我是直接在宿主机启动的,如果想放到docker中,参考这篇文章https://www.jianshu.com/p/397929dbc27d
    docker run -d -p 8080:8080 -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /opt/app/logs:/home/app/logs springboot
    (启动的时候要指定容器时间和宿主时间一致,并挂载日志的路径)

centos7上用docker搭建简单的前后端分离项目的更多相关文章

  1. 【Docker】1、 前后端分离项目 下载启动运行

    人人开源前后端分离项目下载与配置 文章目录 人人开源前后端分离项目下载与配置 前后端分离框架介绍 后端项目下载与配置 1.renren-fast后台项目介绍 2.开发环境搭建 3.下载后端renren ...

  2. 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依 ...

  3. Docker环境下的前后端分离项目部署与运维

    本教程将从零开始部署一个前后端分离的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能.高负载.高可用的部署方案.包括了MySQL集群.Redis集群.负载均衡.双机 ...

  4. 《京东上千页面搭建基石——CMS前后端分离演进史》阅读笔记

    一.背景 CMS即内容管理系统,目的是用于快速进行网站建设或者网页开发. 对于京东网站部门来说,CMS核心目的是用来快速开发和上线各种页面,诸如各种垂直频道页. 二.CMS核心目的 进行数据和模板的统 ...

  5. docker+nginx+redis部署前后端分离项目!!!

    介绍本文用的经典的前后端分离开源项目.项目的拉取这些在另一篇博客!!! 其中所需要的前后端打包本篇就不做操作了!!不明白的去看另一篇博客!!! 地址:http://www.cnblogs.com/ps ...

  6. luffy项目搭建流程(Django前后端分离项目范本)

    第一阶段: 1.版本控制器:Git      2.pip安装源换国内源    3.虚拟环境搭建        4.后台:Django项目创建 5.数据库配置              6.luffy前 ...

  7. Docker环境下的前后端分离项目部署与运维(六)搭建MySQL集群

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信 ...

  8. Docker环境下的前后端分离项目部署与运维(七)Redis高速缓存

    Redis高速缓存 利用内存保存数据,读写速度远超硬盘:可以减少I/O操作,降低I/O压力. 发红包.抢红包的数据可以存在高速缓存中,加快处理速度,不需要经过数据库 淘宝首页一些优惠活动商品等热数据可 ...

  9. Docker环境下的前后端分离项目部署与运维(十一)Docker Swarm技术

    Docker Swarm技术 docker swarm技术(之前的docker集群都是在 一个虚拟主机上的,但是如果这个主机挂掉了over了,docker技术就是多个虚拟主机形成一个集群) Swarm ...

随机推荐

  1. 开始前端三大基础的js之途

                                                     初识   js                                             ...

  2. Linux:Ubuntu银河麒麟防火墙操作

    查看防火墙状态 #防火墙状态 sudo ufw status inactive状态是防火墙 关闭 状态 active状态是防火墙 开启 状态 开启防火墙 #开启防火墙 sudo ufw enable ...

  3. linux安装subversion

    原文: https://www.cnblogs.com/liuxianan/p/linux_install_svn_server.html 安装 使用yum安装非常简单: yum install su ...

  4. 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...

  5. ESP8266相关知识笔记

    1.ESP8266 可以用来做串口透传,PWM 调控,远程控制开关:控制插座.开关.电器等.2.ESP8266有几种不同的使用方式,适用于不同水平的开发工作者. 使用AT指令进行操作:这是最常见的方式 ...

  6. 使用BeautifulSoup自动爬取微信公众号图片

    爬取微信分享的图片,根据不同的页面自行修改,使用BeautifulSoup爬取,自行格局HTML修改要爬取图片的位置 import re import time import requests imp ...

  7. [刘阳Java]_程序员Java编程进阶的5个注意点,别编程两三年还是增删改查

    此文章也是关注网上好几篇技术文章后,今天分享出来.因为,总有在程序学习路上的小伙伴会感到迷茫.而迷茫存在的情况如下 第一种:在大学学习中出现的迷茫,不知道Java到底要学什么.学习Java的标准是什么 ...

  8. 【学习笔记】Github的使用

    在github上上传项目代码 在github官网上新建自己的仓库,需要写好标题和说明文件,然后复制自己的仓库地址 在要上传到的本地project中右键, Git bash here,接着输入 git ...

  9. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-热部署项目到tomcat中,但是数据库配置文件错误,中途停止部署,导致执行shutdow.sh报错异常: Could not contact localhost:8005. Tomcat may not be running error while shutting down】

    1,经过千辛万苦的尝试和百度,终于一个博客:http://stackmirror.caup.cn/page/skxugjqj0ldc关于catalina.sh文件的执行引起了我的注意: 2,我执行ca ...

  10. Redis内部阻塞式操作有哪些?

    Redis实例在运行的时候,要和许多对象进行交互,这些不同的交互对象会有不同的操作.下面我们来看看,这些不同的交互对象以及相应的主要操作有哪些. 客户端:键值对的增删改查操作. 磁盘:生成RDB快照. ...