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

news2024/11/28 22:49:52

上次安装好了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.coloradmin.cn/o/1425304.html

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

相关文章

小白初探|神经网络与深度学习

一、学习背景 由于工作的原因,需要开展人工智能相关的研究,虽然不用参与实际研发,但在项目实施过程中发现,人工智能的项目和普通程序开发项目不一样,门槛比较高,没有相关基础没法搞清楚人力、财力如何投入&…

敏捷软件研发管理流程- scrum

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo领歌上手快、实施成本低,可帮助企业快速落地敏捷,提质增效、缩短周期、加速创新…

嵌入式学习第十六天

制作俄罗斯方块小游戏(一) 分析: printf函数高级用法 \033[:表示转义序列的开始 m:表示转义序列的结束 0:重置所有属性 1:设置粗体或高亮 30-37:设置字体色 30: 黑 31: 红 32:…

服务器未启动而端口进程仍在运行如何查看并杀死

首先登录服务器然后查看当前监听的端口: sudo netstat -tuln比如这里的8080,我们此时并未启动服务器,但是它却正在运行,这会导致服务器刚启动就秒挂。如果没有日志的话会让人有点疑惑,这种情况可能是之前运行了该进程…

系统架构设计师-21年-下午答案

系统架构设计师-21年-下午答案 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答,二、三、四、五题中任选两题作答 试题一 (25分) 说明 某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发…

rancher证书过期问题处理

问题 起初,打开rancher ui页面打不开,telnet rancher的服务端口也不通。查看rancher 控制节点,日志显示,X509:certificate has expired or is not ye valid。证书已过期 解决 现在网上大部分的解决方案都是针对的2…

迁移windows操作系统

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

【MATLAB】PSO_BiLSTM神经网络回归预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 PSO_BiLSTM神经网络回归预测算法是一种结合了粒子群优化(Particle Swarm Optimization,PSO)和双向长短期记忆网络(Bidirectional Long Shor…

CodeGeeX AI编程助手提升.NET开发工作效率

前言 2022年6月,随着GitHub Copliot正式面向大众发布。让许多开发者都感受到了AI辅助编程工具的魅力所在,Copilot实现了帮助开发者大大提高了编程开发效率,让程序员朝九晚五成为可能。Copilot近乎是完美的,但还是由于种种原因&am…

LeetCode:49. 字母异位词分组

49. 字母异位词分组 1)题目2)代码3)结果 1)题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs…

color - 让你的输出带点颜色

color color 是一个可以让你输出带颜色文本的库。 安装 go get github.com/fatih/color示例 输出到控制台 // 这会直接输出到控制台 color.Cyan("Prints text in cyan.")// 每个调用末尾会自动加上换行 color.Blue("Prints %s in blue.", "text&…

任务导向的扩散模型压缩;万物皆可成像;根据舞蹈生成音乐;LLM长上下文对齐;LLM KV缓存量化;通过运动场辅助扩散模型图像编辑

本文首发于公众号:机器感知 任务导向的扩散模型压缩;万物皆可成像;根据舞蹈生成音乐;LLM长上下文对齐;LLM KV缓存量化;通过运动场辅助扩散模型图像编辑 Task-Oriented Diffusion Model Compression As re…

Vmware 无法开启虚拟化解决方法

最近遇到了Vmware无法开启虚拟化的问题,已经解决,记录一下解决经过。 我遇到的情况是BIOS已经开启虚拟化,HV服务也停用了,但是Vmware仍然提示模块“VPMC”启动失败。网上的解决方案千篇一律,基本都是排查BIOS、停用Windows的虚拟化功能、停用HV主机服务、Vmware配置中关闭…

python pandas模块详解

python pandas模块详解 一:pandas简介二:pandas安装以及库的导入2.1 Pandas安装2.2 pandas模块的导入 三:pandas数据结构3.1 pandas Series结构3.1.1创建Series对象1)ndarray(数组)创建Series对象2&#xf…

静态时序分析:时序弧以及其时序敏感(单调性)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中,不管是组合逻辑单元(如与门、或门、与非门等)还是时序逻辑(D触发器等)在时序建模时…

Elasticsearch性能调优

背景 项目上是用 ES 做数据库,存储的告警数据,量级在千万级别左右。测试在压测之后,系统频繁出现告警记录查询报错,系统不可用。基于此排查分析项目上 Elasticsearch 的使用是否合理。 版本及硬件 环境:10.xx.xxx.x…

sectigo ip ssl证书有哪些

Sectigo是移交成立时间较久的CA认证机构,几十年来在全球颁发了各种各样的数字证书,例如,单域名SSL证书、多域名SSL证书、通配符SSL证书等域名SSL证书。Sectigo旗下也有一些不常见的数字证书,例如,代码签名证书、IP证书…

浅谈WPF之UniformGrid和ItemsControl

在日常开发中,有些布局非常具有规律性,比如相同的列宽,行高,均匀的排列等,为了简化开发,WPF提供了UniformGrid布局和ItemsControl容器,本文以一个简单的小例子,简述,如何…

ApacheNginx配置ssl证书

一、Apache配置ssl Linux版本:CentOS Linux release 7.9.2009 (Core) Apache版本:Apache/2.4.6 (CentOS) 1、安装Apache(使用默认yum源) [root10-35-1-25 ~]# yum -y install httpd2、查Apache版本&启动Apache [root10-35-…

vue使用富文本

1、安装 cnpm install vue-quill-editor2、在main.js中引入 // 富文本 import VueQuillEditor from vue-quill-editor // require styles 引入样式 import quill/dist/quill.core.css import quill/dist/quill.snow.css import quill/dist/quill.bubble.css Vue.use(VueQuill…