首页 > 数据库 >Docker使用docker-compose一键部署nacos、Mysql、redis

Docker使用docker-compose一键部署nacos、Mysql、redis

时间:2024-11-12 12:16:37浏览次数:3  
标签:compose Mysql redis nacos mysql docker ncc sudo

下面是一个简单的例子,展示如何通过Docker Compose文件部署Nacos、MySQL和Redis。请确保您的机器上已经安装了Docker和Docker Compose。

1,准备好mysql、redis、nacos镜像

sudo docker pull mysql:8 && sudo docker pull redis:7.2 && sudo docker pull nacos/nacos-server:v2.4.3

2,如果因为网络问题,没有下载到,可以直接下载镜像包

  1. mysql:8镜像包  
  2. redis:7.2镜像包
  3. nacos/nacos-server:v2.4.3镜像包

3,根据需求下载Docker镜像包,然后导入到Docker:

sudo docker load -i xxxx.tar

4,查看docker-compose 版本

sudo docker-compose -version

 

5,如果遇到以下情况,说明docker-compose没有安装:

6,docker-compose没有的话,则根据以下地址下载: 

sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

7,如果因为网络或者下载慢,可根据以下连接进行下载,然后放到服务器 /usr/local/bin下,以下是centos x86_64

  1. docker-compose

8,设置权限:

sudo chmod +x /usr/local/bin/docker-compose

9,创建符号链接(如果需要的话,这一步是可选的,用于将 Docker Compose 添加到 PATH 中,以便可以在任何位置运行它):

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 10,验证安装:

sudo docker-compose -version

11,创建nacos数据库SQL导入Dockerfile

sudo vi Dockerfile
FROM mysql:8
ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
EXPOSE 3306
CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]

12,创建Docker Compose文件
在工作目录下创建一个名为docker-compose.yml的文件:

sudo vi docker-compose.yml
version: '3.8'

services:
  ncc-mysql:
    container_name: ncc-mysql
    restart: unless-stopped
    build:
      context: .
      dockerfile: ./Dockerfile
    image: mysql:8
    privileged: true
    volumes:
      - /data/ncc/mysql:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=mysql@2024
      - MYSQL_DATABASE=nacos
      - MYSQL_USER=nacos
      - MYSQL_PASSWORD=nacos@2024
      - LANG=C.UTF-8
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      interval: 5s
      timeout: 10s
      retries: 10
    networks:
      - ncc-docker


  ncc-nacos:
    container_name: ncc-nacos
    restart: unless-stopped
    image: nacos/nacos-server:v2.4.3
    privileged: true
    volumes:
      - /data/ncc/nacos:/home/nacos
    ports:
      - 8848:8848
      - 9848:9848
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=ncc-mysql
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=nacos@2024
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      - NACOS_AUTH_ENABLE=true
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
    depends_on:
      ncc-mysql:
        condition: service_healthy
    networks:
      - ncc-docker

  ncc-redis:
    container_name: ncc-redis
    restart: unless-stopped
    image: redis:7.2
    privileged: true
    volumes:
      - /data/ncc/redis:/data
    ports:
      - 6379:6379
    environment:
      - TZ=Asia/Shanghai
    networks:
      - ncc-docker
    command: ["redis-server", "--requirepass", "redis@2024","--appendonly","yes"]

networks:
  ncc-docker:
    driver: bridge
    external: false

13,启动服务

在包含docker-compose.yml文件的目录中打开终端,运行以下命令来启动服务:

sudo docker-compose up -d

14,发现nacos起不了,查看一下日志:

sudo docker logs ncc-nacos

15,发现启动的脚本找不到,查看一下挂载路径:

16,确实是没有,解决办法,先启动一个临时不挂载的容器,把文件拷贝到宿主主机

sudo docker-compose down

 

17,修改docker-compose.yml,把volumes注释掉:

sudo vi docker-compose.yml

 18,再启动服务:

sudo docker-compose up -d

确实是启动成功了,然后把容器/home/nacos拷贝到本地/data/ncc/nacos/

sudo docker cp ncc-nacos:/home/nacos /data/ncc/nacos

19,关闭服务,并且去掉刚才volumes注释

sudo docker-compose down
sudo vi docker-compose.yml

 20,重新启动服务

sudo docker-compose up -d

21,检查mysql服务是否正常

sudo docker exec -it ncc-mysql mysql -uroot -pmysql@2024

22,检查redis服务是否正常

sudo docker exec -it ncc-redis redis-cli

 23,检查nacos是否正常:

sudo docker logs ncc-nacos

查看报错是因为数据库没有建好

https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql

 将mysql-schema.sql下载,并上传到服务器上面

然后执行SQL运行,并查看数据库表是否存在

sudo docker exec -i ncc-mysql mysql -uroot -pmysql@2024 nacos < ./mysql-schema.sql
sudo docker exec -it ncc-mysql mysql -uroot -pmysql@2024

再查看nacos日志,说明已经启动成功 

进行访问:http://47.108.195.246:8848/nacos/ 

账号:nacos

密码:nacos

OK,完成! 

标签:compose,Mysql,redis,nacos,mysql,docker,ncc,sudo
From: https://blog.csdn.net/Mr_binM/article/details/143565285

相关文章

  • mysql 的安装
    oimysql,是数据库一、yum安装1、下载MySQL源和安装包wget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum-yinstallmysql57-community-release-el7-10.noarch.rpm2、为避免出现源"MySQL5.7CommunityServer"的GPG密钥已......
  • 1.redis常见数据类型-列表List
     列表类型-list①.列表list是一个单键多值的Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差②.常用命令插入、删除、获......
  • 如何使用Redis进行缓存管理?
    使用Redis进行缓存管理时,需要考虑以下几个方面:选择合适的缓存策略:常见的缓存策略包括FIFO(先进先出)、LRU(最近最少使用)和LFU(最近最不常使用)等。此外,还有CacheAside(旁路缓存)、Read/WriteThrough(读写穿透)和WriteBehindCaching(异步缓存写入)等模式。缓存读写策略:Redis支持多......
  • Mysql篇-Buffer Pool中的三大链表
    为什么要有BufferPool?虽然说MySQL的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。要想提升查询性能,那就加个缓存。所以,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取。为此,Innodb存储引擎设计了一个缓冲池(Buffer......
  • Docker 构建 PHP 7.1 和 MySQL 支持的 Web 环境
    在现代Web开发中,Docker已成为构建和部署应用程序的重要工具。本文将介绍如何使用Dockerfile创建一个包含PHP7.1、Apache和MySQL支持的Web环境。这个设置非常适合运行需要MySQL数据库的PHP应用程序。Dockerfile详解让我们逐步分析这个Dockerfile:#使用......
  • 数据库技术提升-MySQL数据库原理、设计与应用【1.9】
    4.4.4商品表商品分类与商品是一对多的联系,一个分类中有多件商品。商品表的具体结构如表4-14所示。在表4-14中设计的商品表sh_goods共有21个字段,具体说明如下商品id:主键,使用无符号整型存储,自动增长。。·分类id:商品所属分类,使用无符号整型存储,自动增长。S......
  • 【MySQL】MySQL基础知识复习(下)
    前言上一篇博客介绍了MySQL的库操作,表操作以及CRUD。【MySQL】MySQL基础知识复习(上)-CSDN博客本篇将进一步介绍CRUD操作,尤其是查找操作目录一.数据库约束1.约束类型1.1NULL约束1.2UNIQUE:唯一约束1.3DEFAULT:默认值约束1.4PRIMARYKEY:主键约束1.5FOREIGNKEY:外键约束......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现三
    一、前言介绍:[免费获取]1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵活、便......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现四
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • Java毕设项目案例实战II基于Java+Spring Boot+MySQL的狱内罪犯危险性评估系统设计与实
    目录一、前言二、技术介绍三、系统实现四、核心代码五、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。一、前言在司法体系中,狱内罪犯的危险性评估是确保监狱安全、提升管理效率的关键环节。传统......