阿里云 Docker 部署个人博客全过程记录

Dockers安装

新手可以去阿里云免费试用一个月云服务器,建议按照阿里文档部署,CentOS可以参考这个

https://help.aliyun.com/document_detail/187598.html

查看本机内核版本,内核版本需高于 3.10

uname -r

运行以下命令,安装dnf

yum -y install dnf

运行以下命令,安装Docker存储驱动的依赖包

dnf install -y device-mapper-persistent-data lvm2

运行以下命令,添加稳定的Docker软件源(一定要配置,不然下载速度特别慢)

dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

正确的返回示例如下

docker-ce.x86_64        3:19.03.13-3.el7        docker-ce-stable

运行以下命令安装Docker

dnf install -y docker-ce --nobest

配置阿里云镜像加速docker镜像下载,参考这个

https://help.aliyun.com/document_detail/60750.html

运行以下命令启动Docker

systemctl start docker

验证安装

docker version

docker的一些基础命令

docker images 查看docker镜像
docker ps 查看正在运行的容器
docker ps –a 查看所有容器
service docker status 查看docker状态
docker version 查看docker版本

创建自定义网络

docker 默认是使用bridge,容器每次启动,IP都会发生变动,不利于维护管理, 172.17.0.0/16 是docker默认网段

docker network create --subnet=172.18.0.0/16 blognet

mysql容器安装

拉取mysql镜像

docker pull mysql:5.6

创建并运行容器,123456root 密码, --network blognet --ip 172.18.0.2 使用之前创建的网络, 172.18.0.1是网关

docker run --name mysql56 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --network blognet --ip 172.18.0.2  -d mysql:5.6

在默认情况下,我们安在阿里云上的mysql是不支持远程连接的,但是我们还需要通过一些工具来连接mysql,如navicat,这时就需要我们来修改mysql的远程连接了。

docker exec -it mysql56 bash
mysql -uroot -p

打开mysql数据库 (需要有能操作blog这个库的权限,一般是mysql的root用户)

use blog;

指定的ip 表示 只有该ip能连接mysql

-- *.*代表所有库表
-- 若想给予所有IP权限,”ip”写成“%”,所以第一句sql的意思是给予来自所有IP地址的通过“root用户”
-- “密码”登录的用户对所有库表的所有操作权限
grant all privileges on *.* to 'root'@'阿里云公网IP' identified by 'root密码' with grant option;
-- 刷新权限
flush privileges;

不要现在就去navicat进行连接,还需要做两件事,要不你就到坑里了

测试连接mysql,如:命令行或navicat,连接上即成功创建mysql容器,随后进行建库建表操作

redis容器安装

docker pull redis

以配置文件启动,redis.conf文件链接: https://www.aliyundrive.com/s/Q1TG9UjNLWk 提取码: 5ld2

/root/redis/redis.conf 中daemonize=NO。非后台模式,如果为YES 会的导致 redis 无法启动,因为后台会导致docker无任务可做而退出。

-v /root/redis/data:/data 容器 /data 映射到宿主机 /root/redis/data

-d redis 后台模式启动 redis

redis-server /etc/redis/redis.conf redis 将以 /etc/redis/redis.conf 为配置文件启动

--appendonly yes 开启redis 持久化

docker run -p 6379:6379 --network blognet --ip 172.18.0.5 --name redis -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

mongodb容器安装

docker pull mongo
docker run --network blognet --ip 172.18.0.7 -itd --name mongo -p 27017:27017 mongo --auth

docker run -it --rm \
  --link mongo:mongo \
  --entrypoint npm \
  --workdir /api/vendors \
  registry.cn-hangzhou.aliyuncs.com/anoy/yapi \
  run install-server

进入容器

docker exec -it mongo mongo admin
-- mongo5.0以上使用
docker exec -it mongo mongosh admin

创建全局用户

db.createUser({ user:'admin', pwd:'123456', roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

对 admin 用户进行身份认证

db.auth("admin","123456");

创建用户以及关联数据库

db.createUser({ user: 'log', pwd: '123456', roles: [ { role: "readWrite", db: "log" } ] });

对 log用户进行身份认证

db.auth("log","123456");

远程连接的开启

mongodb 的容器当中

#更新源
apt-get update
#安装 vim
apt-get install vim
#修改 mongo 配置文件
vim /etc/mongod.conf.orig

将其中的bindIp: 127.0.0.1注释掉# bindIp: 127.0.0.1 或者改成bindIp: 0.0.0.0 即可开启远程连接

遇到的坑

用 use db 创建数据库,show dbs 查不到

此SHOW DBS命令不会显示数据库,因为您可能尚未为集合创建文档。如果要为集合创建文档,则创建的数据库将可见。

> use log;
switched to db web

-- 为了显示WEB数据库,我们需要在同一数据库中创建包含文档的集合
> db.check.insertOne({"ClientName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cb806c2623186894665ae35")
}

-- 在find()方法的帮助下显示集合中所有文档的查询
> db.check.find();
{"_id" : ObjectId("5cb806c2623186894665ae35"),"ClientName" :"John" }

-- 显示所有数据库,现在可以看到log数据库了
> show dbs;
admin 0.001GB
config 0.000GB
local 0.000GB
log 0.000GB

解决Navicat连接Mongodb不显示数据库

点击连接,选择mongoDB,在编辑连接中选择数据库,全选

springboot整合mongo,配置密码连接,就报错

两种配置都少一步关键配置 ,需要配置去认证的库 authenticationDatabase也就是需要加(因为我的账号密码信息在admin库里),yml追加authentication-database: admin

spring:
  data:
    mongodb:
      username: 'log'
      password: '123456'
      host: 172.18.0.7
      port: 27017
      database: log
      field-naming-strategy: org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy
      authentication-database: admin

rabbitmq容器安装

这个是带web管理页面的,启动后访问ip:15672

docker pull rabbitmq:management
-- 默认管理员账号:guest 密码:guest
docker run -di --name=rabbitmq --network blognet --ip 172.18.0.6 -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management

参考文章:阿里云下配置MySQL远程连接的步骤详解

posted @   YOLO_BLOG  阅读(156)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示