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. webpack(5)webpack处理css文件

    css文件处理-准备工作 (以下项目配置都是基于上一篇webpack(4)的基础上) 在项目开发中,我们必然需要添加很多的样式,而样式我们往往写到一个单独的文件中. 这里我们就在src目录中创建一个n ...

  2. Quartz:Quartz添加事务回滚报错

    自动任务类: @PersistJobDataAfterExecution @DisallowConcurrentExecution public class ReCodeBack implements ...

  3. Parrot os 安装vmtools

    1.更新源(这步个人觉得官方源还可以,没网上说的那么慢) vim /etc/apt/sources.list.d/parrot.list linux命令 ,按i进入修改模式,修改结束,之后先按esc, ...

  4. STP、生成树的算法

    STP.生成树的算法       一.STP        1)STP概述        2)交换网络环路的产生        3)STP简介        4)STP的工作原理        5)S ...

  5. C语言:常用数学函数

    #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> # ...

  6. [刘阳Java]_酷炫视频播放器制作_JS篇

    此文章是接着上次写的<酷炫视频播放器制作_界面篇>将其完善,我们主要给大家介绍一下如何利用JS脚本来控制视频的播放.为了让大家能够保持对要完成的功能有直接的了解,我们还是将效果图附到文章里 ...

  7. Linux 安装 Nodejs 的两种方式

    Linux 安装 Nodejs 的两种方式 目录 Linux 安装 Nodejs 的两种方式 一.压缩包安装 Nodejs 二.源码编译安装 Nodejs 一.压缩包安装 Nodejs 下载 Node ...

  8. NOI Online 提高组 题解

    来补坑了-- 个人认为三道题难度差不多-- 还有要说一嘴,为啥我在其他网站代码都好好的,复制到 cnblogs 上 Tab 就成 8 空格了?不过也懒得改了. T1 序列 首先,遇到这种加一减一还带附 ...

  9. 【排序+模拟】谁拿了最多奖学金 luogu-1051

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 院士奖学金,每人$ 8000 $元,期末平均成绩高于\(80\)分(\(>80\)),并且在本 ...

  10. 搭建SAMBA服务

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建SABMA服务的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件版本 ...