appsmith安装手记:5.Sql server数据库容器再安装(yml)

上次安装好了sql server容器,但是appsmith创建数据源出现连接错误:
[2024-01-30 00:25:52,186] userEmail=tt@app.com, sessionId=b99a2476-5c35-4a71-9e8e-25c9c3292cfa, thread=boundedElastic-38, requestId=ea262c1d-722b-4176-aac7-4b062d7066b6 - Operator called default onErrorDropped
com.appsmith.external.exceptions.pluginExceptions.AppsmithPluginException: Exception occurred while creating connection pool. One or more arguments in the datasource configuration may be invalid. Please check your datasource configuration.
日志看不出所以然。但是似乎是两个容器之间的网络不通,于是又学习了点知识,继续再战。

每次运行Docker run是很麻烦的,多个容器的启动更麻烦,而Compose 是用于定义和运行多容器 Docker 应用程序的工具,通过 Compose使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令从 YML 文件配置中创建并启动所有服务。

开干!

step1.先创建一个自定义网络网络
[root@localhost mssql]# docker network create --driver bridge --subnet 172.168.0.0/24 --gateway 172.168.0.1 appsmith_sqlserver
540e83d5fd88cab6ff28a2ae55b862b1b145bdd9fe66374b46f8c10f46b4936b

step2.创建一个文件夹,其下建yml文件
在/home/mssql 下创建一个dock-compose.yml,内容如下
[root@localhost mssql]# cat docker-compose.yml
version: "3"
services:
   appsmith:
     image: index.docker.io/appsmith/appsmith-ce
     container_name: appsmith
     ports:
         - "80:80"
         - "443:443"
     volumes:
         - ./stacks:/appsmith-stacks
     restart: unless-stopped
     networks:
         - appsmith_sqlserver

   mssql:
      image: mcr.microsoft.com/mssql/server:2022-latest
      container_name: mssql
      restart: always
      hostname: mssql
      environment:
       #接受最终用户许可协议
        - ACCEPT_EULA=Y
       #SA用户密码,密码长度必须至少为8个字符,并且包含以下四组中的三组字符:大写字母、小写字母、数字和符号。
        - MSSQL_SA_PASSWORD=2025@Passw0rd
        - MSSQL_PID=Express
      ports:
        - 1433:1433
      volumes:
        - /home/sql_db_files:/var/opt/mssql
      networks:
        - appsmith_sqlserver

networks:
     appsmith_sqlserver:
          driver:  bridge

建文件不难,主要要细心,否则yml文件不是这行错就是那行错,如果出错,你可以用yaml在线校验工具验证一下。


step3.启动容器
[root@localhost mssql]# docker compose up -d
[+] Running 2/3
 ⠦ Network mssql_appsmith_sqlserver  Created                                                                                                                                                                                    0.6s 
 ✔ Container appsmith                Started                                                                                                                                                                                    0.5s 
 ✔ Container mssql                   Started         

step4.查看容器的IP信息
[root@localhost mssql]# docker network ls
NETWORK ID     NAME                       DRIVER    SCOPE
b875cddf1acd   appsmith_default           bridge    local
540e83d5fd88   appsmith_sqlserver         bridge    local
dc7aec8cad2b   bridge                     bridge    local
e4a4591b8a36   host                       host      local
27e5417bd70b   mssql_appsmith_sqlserver   bridge    local
f173df622cec   none                       null      local
945d5b503344   sql_db_files_default       bridge    local
[root@localhost mssql]# docker network inspect appsmith_sqlserver
[
    {
        "Name": "appsmith_sqlserver",
        "Id": "540e83d5fd88cab6ff28a2ae55b862b1b145bdd9fe66374b46f8c10f46b4936b",
        "Created": "2024-01-30T08:16:10.209740601-05:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.168.0.0/24",
                    "Gateway": "172.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
我创建的appsmith_sqlserver网络里面根本没有两个容器分配的IP地址!!
但是现在冒出一个带有文件夹前缀的网络 mssql_appsmith_sqlserver,里面有两个容器的IP地址,也就是说,我第一步的操作无效。

[root@localhost mssql]# docker network inspect mssql_appsmith_sqlserver
[
    {
        "Name": "mssql_appsmith_sqlserver",
        "Id": "27e5417bd70bc0d2974270ee00bd1942e17d15a2c5af28c587a188df5c9d5667",
        "Created": "2024-01-30T08:24:41.296757253-05:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.21.0.0/16",
                    "Gateway": "172.21.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "76aea4fa4882b5038641b8a454b774c9fa36348237d80a58ecce27496334f641": {
                "Name": "mssql",
                "EndpointID": "ecf7cdf572de8c3af2117af35ca6605c2e8ce1a857dd7926ab9e5cfbc771a3dc",
                "MacAddress": "02:42:ac:15:00:03",
                "IPv4Address": "172.21.0.3/16",
                "IPv6Address": ""
            },
            "8c909e8306f791162da66662239e6a7e0135af4df0fc41519de2ad1555830dcd": {
                "Name": "appsmith",
                "EndpointID": "051aa5cd5f6eda7c99831c5db6d407d1fdf7cf0ca4034742b7ce59b81e0f1249",
                "MacAddress": "02:42:ac:15:00:02",
                "IPv4Address": "172.21.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "appsmith_sqlserver",
            "com.docker.compose.project": "mssql",
            "com.docker.compose.version": "2.24.1"
        }
    }
]

step5.连接容器,创建数据库

[root@localhost data]# docker exec -it mssql "bash"
mssql@mssql2022:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 2025@Passw0rd
1> create database testdatabase
2> ;
3> go
1> 

step6.appsmith里面配置数据库连接
顺顺利利

至此appsmith和数据库的连接环境就搭建好的,后面可以进一步探索了。

这次安装中,还是碰到几个小水坑的:
水坑1:[root@localhost appsmith]# docker logs 84f18f951d0a
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. File: LinuxDirectory.cpp:420 [Status: 0xC0000022 Access Denied errno = 0xD(13) Permission denied]
从日志可以看出是权限问题。
--改owner
[root@localhost home]# chown -R docker:docker /home/sql_db_files
--改owner
[root@localhost home]# chown -R 10001:0  /home/sql_db_files
--添加用户,加组
[root@localhost home]# adduser -u 10001 mssql
[root@localhost home]# usermod -aG docker $USER
折腾好几次才发现,确实是和权限有关系,但最要原因是出在映射文件目录错误导致。

水坑2:容器里面创建了数据库,在sql server管理控制台中看不到;
主要是习惯了查询分析器,所以忘记go了!
1> create database workshop_batch
2> ;
3> go
1> exit
mssql@mssql2022:/$ exit
 

水坑3:如果前面已经创建了mssql容器,提示已存在,可以使用rm删除

[root@localhost appsmith]# docker rm -f mssql

水坑4:每一个yml文件都会创建一个网络

即使指定了网络也不行,所以只能那两个容器都包在一个yml文件中,理论应该是可以,只是我对Docker容器网络了解还不够。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迁移windows操作系统

最近有个朋友跟我说他电脑台卡了,我帮他大概看了下,归集原因磁盘还是机械硬盘,需要将他的电脑的磁盘的机械硬盘换一下,内存也比较小,4GB的,换一下,换成8GB的,本文只涉及到更换系统盘…

SimpleDateFormat 格式化 Date 时间戳

前言 Date 是 Java 中经常用来表示时间的类型,但将 Date 类型的数据发送给前端时,通常会呈现出乱码的状态,用户不宜理解,所以要通过 SimpleDateFormat 把 Date 类型的数据格式化为用户容易理解的格式 如下是 Date 的格式&#xff…

速过计算机二级python——第四讲:列表与字典

第四讲:列表与字典 列表定义定义索引切片 操作基本操作进阶操作 字典定义定义索引 操作基本操作进阶操作 二者转化列表->字典字典->列表 列表 定义 定义 列表是由一系列按顺序排列的元素组成,它可以包含任意的字母表中所有字母、数字或者字符。列…

clickhouse行转列的转换

1、原表select * from test 2、一个人的每个科目作为一行记录 改为一个人的所有科目作为一行记录 方式1 select name, sum(case when subject‘语文’ then score else 0 end) as chinese, sum(case when subject‘数学’ then score else 0 end) as math from test group by …

wangEditor v4的简单使用

当前文档是 wangEditor v4 版本的。 wangEditor v5 已经正式发布,可参考文档。 v5 发布之后,v4 将不再开发新功能。 介绍 English documentation wangEditor4 —— 轻量级 web 富文本编辑器,配置方便,使用简单。 官网&#…

TypeScript(十一) 类、对象

1. 类 1.1. 简介 TypeScript是面向对象的JavaScript。   类描述了所创建的对象共同的属性与方法。 1.2. 类的定义 class class_name { // 类作用域 }(1)定义类的关键字是class,后面紧跟类名,类可以包含以下几个模块&#xff…

PHP基础语法(上)

目录 前言 一、基础语法 1.1 标记 1.2 输出语句 1.2.1 echo 1.2.2 print 1.3 注释 1.3.1 单行注释 1.3.2 多行注释 1.4 标识符 1.5 关键字 二、数据与运算 2.1 常量 2.1.1 常量的定义和使用 2.1.2 预定义常量 2.2 变量 2.2.1 变量的赋值 2.2.2 超全局变量 2.3 数据类型 2.3.1 …

【2024美赛E题】985博士解题思路分析(持续更新中)!

【2024美赛E题】985博士解题思路分析! 加群可以享受定制等更多服务,或者搜索B站:数模洛凌寺 联络组织企鹅:936670395 以下是E题老师的解题思路(企鹅内还会随时更新文档): 2024美赛E题思路详解…

[网络安全] IIS----WEB服务器

一、 WEB服务器 WEB服务器 也叫网页服务器和 HTTP服务器使用协议: HTTP(端口:80) 或 HTTPS(端口443)浏览器:HTTP客户端网站: 一个或多个网页组成的集合 二、HTTP和HTTPS协议: HTTP : 是 HyperText Transfer Protocol(超文本传输协议)的简写,…

【CSS】css选择器和css获取第n个元素(:nth-of-type(n)、:nth-child(n)、first-child和last-child)

:nth-of-type、:nth-child的区别 一、css选择器二、:nth-of-type、:nth-child的区别:nth-of-type(n):选择器匹配属于父元素的特定类型的第N个子元素:nth-child(n):选择器匹配属于其父元素的第 N 个子元素,不论元素的类型:first-child&#xf…

字节大佬含泪吐血总结系列之 ARP 协议详解(网络层)

字节大佬含泪吐血总结系列之 ARP 协议详解(网络层) 原文地址:https://github.com/Snailclimb/JavaGuide 文章目录 字节大佬含泪吐血总结系列之 ARP 协议详解(网络层)MAC 地址ARP 协议工作原理同一局域网内的 MAC 寻址不同局域网内的 MAC 寻址 每当我们学习一个新的…

帅气的性能监控平台Grafana(Windows下使用Grafana监控系统指标与GPU指标)

帅气的性能监控平台Grafana(Windows下使用Grafana监控系统指标与GPU指标) 前情提要 系统环境准备 windows_exporter下载 nvidia_gpu_exporter下载 prometheus下载 Grafana下载 安装指导 windows_exporter安装与nvidia_gpu_exporter安装 promethe…

vscode 如何修改c/c++格式化风格,大括号不换行

在Visual Studio Code(VSCode)中,若要修改C代码格式化的风格以实现大括号不换行,通常会借助于插件C/C扩展中的ClangFormat配置。以下是具体的步骤: 确保已安装了C/C扩展: 打开VSCode的扩展市场(…

最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画局部编辑重绘,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…

学习笔记 | 微信小程序项目day01

今日学习内容 如何创建一个uni-app项目如何运行到微信微信开发者工具如何申请小程序appid如何配置tabBar轮播图demo 如何创建uni-app项目 使用HBuilder X 创建 如何运行到微信微信开发者工具 1、安装uni-app vue3 编译器 插件 2、安装微信开发者工具 微信开发者工具下载地址…

annoy,一个超强的 Python 库!

更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个超强的 Python 库 - annoy。 Github地址:https://github.com/spotify/annoy 在大数据时代,处理高维数据集的需求越来越迫切,尤其是在机器学习、推荐系统和自…

JS 异常处理

1、抛出异常 throw 1.throw抛出异常信息,程序也会终止执行 2.throw后面跟的是错误提示信息 3.Error对象配合 throw使用,能够设置更详细的错误信息 示例 function fn(x, y) {if (!x || !y) {throw new Error(没有参数传进来) }return x y } fn()打印结果…

基于LlamaIndex解决RAG的关键痛点

受到 Barnett 等人的论文《Seven Failure Points When Engineering a Retrieval Augmented Generation System》的启发,本文将探讨论文中提到的七个痛点,以及在开发检索增强型生成(RAG)流程中常见的五个额外痛点。更为关键的是&am…

Camera2+OpenGL ES+MediaCodec+AudioRecord实现录制音视频写入H264 SEI数据

记录一下学习过程,得到一个需求是基于Camera2OpenGL ESMediaCodecAudioRecord实现录制音视频。 需求: 在每一帧视频数据中,写入SEI额外数据,方便后期解码时获得每一帧中的自定义数据。点击录制功能后,录制的是前N秒至…

AI实践于学习3_大模型之AI解题提示词优化实践

前言 提示词只是让LLM具有一定的推理能力,并不能直接提高模型能力,可以借助CoT思维链、提示词规则一定程度微调模型。 尽量使用新模型,通用性能更好,支持提示词规则更多。 参考 https://www.rgznbk.com/archives/Prompt-Engin…