docker 部署spug运维神器

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 如果没有外网可以先在一台有外网的机器上把镜像build好并save,然后把镜像传到局域网的机器。

docer 部署步骤参考官方文档: https://www.spug.dev/docs/install-docker/


如果没有外网可以先在一台有外网的机器上把镜像build好并save,然后把镜像传到局域网的机器。


这里为了方面直接用官方的镜像,官方的image是有dockerfile的. 顺便学习一下他们的dockerfile 是怎么写的?

docker save -o spug_image.docker registry.aliyuncs.com/openspug/spug

然后在局域网的服务器上load这个image

docker load -i spug_image.docker

启动docker container需要注意一定要把数据持久化到宿主机上,否则container 一旦被删除所有的数据将随之消失.


如果需要持久化存储代码和数据,可以添加:-v 映射容器内/data路径

# mydata指的是本地磁盘路径,也可以是其他目录,但需要保证映射的本地磁盘路径已经存在,/data是容器内代码和数据初始化存储的路径
$ docker run -d --restart=always --name=spug -p 80:80 -v /mydata/:/data registry.aliyuncs.com/openspug/spug
-p 参数是两个端口映射 
一个是主机的转发端口,一个是容器内的侦听端口

20210402194245915.png

持久化的作用就是将项目的源代码和数据库的相关操作持久化到宿主机上.

刚开始有个疑问,我没有建立数据库,我在spug上保存的数据都跑哪里去了?

难道是在别人的数据库中.

这个认识肯定是错误的,仔细看过docker file后,你会发现,镜像中其实是有下载一个mysql的。

查看该mysql 的连接信息:

docker exec -it spug /bin/bash 以交互模式进入这个container

可以看出这个项目使用了django框架

20210402194722249.png

容器中的依赖服务。可以看到使用的是mariadb

/]# more /etc/supervisord.d/spug.ini
[supervisord]
nodaemon=true
[program:mariadb]
command = /usr/libexec/mysqld --user=mysql
autostart = true

ld --user=mysql

autostart = true

还有其他依赖例如 nginx、redis... 暂时还没研究到这里. 知道的朋友请不吝赐教。


数据放在container里面,虽然会持久化在宿主机上,但是不能用工具连接并看到数据,就让有的人担心.


如何将spug的数据持久化的本地?


例如你的主机、发布、应用等信息怎么看到呢?  如果想用这些数据做其他客制化的东西都是很有必要把数据持久化在本地的.20210402195533297.png

20210402195703563.png

1、先在本地的mysql 建数据库

2、修改mysql配置并停止容器中的数据库服务

# 1. 进入容器
$ docker exec -it spug bash
# 2. 修改配置文件使访问外部数据库
$ vi /data/spug/spug_api/spug/overrides.py
DATABASES = {
    'default': {
        'ATOMIC_REQUESTS': True,
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'spug',
        'USER': 'spug',  # 修改为外部数据库的用户
        'PASSWORD': 'spug.dev',  # 修改为外部数据的用户密码
        'HOST': 'localhost',    # 修改为外部数据的ip
        'OPTIONS': {
            'unix_socket': '/var/lib/mysql/mysql.sock',   # !!!删除该行
            'charset': 'utf8mb4',
            'sql_mode': 'STRICT_TRANS_TABLES',
        }
    }
}
# 3. 停止容器内的数据库服务
$ vi /etc/supervisord.d/spug.ini
# 找到如下行并删除
[program:mariadb]
command = /usr/libexec/mysqld --user=mysql
autostart = true
# 4. 退出并重启容器
$ exit
$ docker restart spug

3、此时你会发现切换为本地数据源之后的之前的数据都不在了

不要慌,只要是以持久化模式启动的container就问题不大。

毕竟数据已经在宿主机上镜像了一份。

只要启动一个内置mysql的spug container,然后把数据库备份下来

在本地数据源的mysql服务器上把把备份重放即可.


mysql -h 主机名 -u 用户名 -p


-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;

-u : 所要登录的用户名;

-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。


使用下面这个配置连接内置的spug.

20210402194722249.png

以交互模式进入container

20210406150047377.png

将备份从container 直接scp mysql服务器上

登录mysql将其恢复

先创建DB,然后导入sql

create databse  spug;

切换到mysql 命令行执行,然后 source sql文件.

20210430165340431.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
运维 安全 数据安全/隐私保护
构建高效自动化运维体系:Ansible与Docker的协同实践
【4月更文挑战第29天】 在当今IT基础设施快速演变的背景下,自动化成为维护系统稳定性和提升运维效率的关键。本文将深入探讨如何利用Ansible和Docker技术搭建一个高效的自动化运维体系。通过剖析Ansible的配置管理功能与Docker容器化的优势,我们展示了一种能够实现快速部署、轻松管理和无缝扩展的自动化解决方案。文章还将分享一系列优化策略,以期帮助读者构建出既灵活又强大的自动化工具链。
|
1天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用合集之关于在Docker环境中部署和维护PolarDB-X,有相关文章可以参考吗
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2天前
|
运维 Kubernetes 负载均衡
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【4月更文挑战第28天】随着云计算和微服务架构的普及,自动化运维已成为提升系统稳定性、效率及快速响应市场变化的关键。本文将探讨如何利用容器化技术Docker和容器编排工具Kubernetes来构建一个高效、可扩展的自动化运维体系。我们将分析该技术栈的优势,并通过一系列实践案例,展示如何优化现有的运维流程,实现资源的最大化利用和风险的有效控制。
|
2天前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之在阿里云函数计算中使用Docker进行部署函数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
6 0
|
2天前
|
运维 监控 Linux
【专栏】举几个Docker ps 命令的例子,Linux运维必知
【4月更文挑战第28天】本文介绍了Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用。通过基础和高级用法示例,如列出所有容器、搜索特定镜像、监控资源使用等,帮助读者理解和提升容器管理效率。对于Linux运维工程师,掌握`docker ps`是必备技能。
|
4天前
|
数据库 Nacos Docker
基于docker-compose部署微服务基本环境
基于docker-compose部署微服务基本环境
7 0
|
4天前
|
运维 安全 Docker
构建高效自动化运维体系:Ansible与Docker的协同策略
【4月更文挑战第26天】 在当今IT基础设施管理领域,自动化已成为提升效率、确保一致性及减少人为错误的必备工具。本文将探讨如何整合Ansible和Docker技术,以实现高效的自动化运维流程。通过分析Ansible的配置管理特性和Docker容器化的优势,我们将展示一种创新的协同策略,旨在优化部署速度、提高系统稳定性,并简化复杂环境的管理。本研究不拘泥于传统摘要的形式,而是提供一种实践导向的方法论,帮助运维专家突破现有运维模式的局限,构建更为灵活和可持续的自动化框架。
|
5天前
|
消息中间件 Kafka Docker
docker部署kafka
docker部署kafka
26 1
|
5天前
|
算法 Nacos Docker
docker部署nacos集群
docker部署nacos集群
14 0
|
5天前
|
消息中间件 Kafka Docker
【消息中心】docker部署kafka
【消息中心】docker部署kafka
16 0