公司迁移服务器,原来用的是windows服务器+tomcat
域名证书现在腾讯和阿里只剩下三个月的免费证书了,还得续费,忒麻烦了
正好近期续费需要合并服务器,我就准备迁移到linux服务器,搭配使用1panel来自动申请ssl证书
首先是使用docker安装sqlserver2022
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
networks:
1panel-network:
external: true
services:
mssql:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=${MSSQL_SA_PASSWORD}
image: mcr.microsoft.com/mssql/server:2022-latest
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTP}:1433
restart: unless-stopped
volumes:
- ./data:/var/opt/mssql/data
安装后测试时未发现问题,正式使用后发现搜索时报错,一看全文搜索功能没有,在网上查了又查,发现镜像本身没有FTS功能,想用需要自己构建镜像,下面是自己构建镜像的dockerfile
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
FROM mcr.microsoft.com/mssql/server:2022-latest
USER root
RUN apt-get update
RUN apt-get install -yq curl apt-transport-https gnupg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
curl https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list
RUN apt-get update
RUN apt-get install -y mssql-server-fts
RUN apt-get clean && rm -rf /var/lib/apt/lists/* && rm -rf /*.deb
USER mssql
EXPOSE 1433
CMD ["/opt/mssql/bin/sqlservr"]
在随意目录下创建文件夹,创建dockerfile文件,没有扩展名
docker build -t server-fts:2022-latest .
然后直接把compose里边的镜像改为本地镜像就行
还需要添加参数ACCEPT_EULA=Y
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
networks:
1panel-network:
external: true
services:
mssql:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=${MSSQL_SA_PASSWORD}
image: server-fts:2022-latest
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTP}:1433
restart: unless-stopped
volumes:
- ./data:/var/opt/mssql/data
参考
https://www.itsvse.com/thread-10857-1-1.html
https://github.com/suddenelfilio/mssql-2022-fts-docker/blob/main/Dockerfile
https://blog.suddenelfilio.net/docker-microsoft-sql-server-2022-with-full-text-search/
https://tedspence.com/a-sql-server-docker-container-with-full-text-search-a1b7c5fc308c
https://github.com/tspence/docker-examples
https://github.com/tspence/docker-examples/blob/main/sqlserver-fulltext/Dockerfile
参数说明:
USER root
Dockerfile 中的第一步是设置用户。这通常会覆盖父镜像中设置的用户。在本例中,用户设置为 root。这对于mssql-server-fts软件包的安装和授予 apt 源目录中的写入权限非常重要。
RUN apt-get update
设置用户后,运行 apt-get update 来更新软件包索引并确保您拥有最新的软件包版本。
RUN apt-get install -yq curl apt-transport-https gnupg
此步骤安装 curl、apt-transport-https 和 gnupg 包。这些是与 Microsoft 存储库通信所需的包。
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && curl https://packages.microsoft.com/c ... ql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list
在此步骤中,我们将下载并安装 Microsoft 存储库密钥,这对下一步很重要。我们还将创建文件mssql-server-2022.list并将其复制到/etc/apt/sources.list.d/目录中。这样做是为了从 Microsoft 存储库启用软件包安装。
RUN apt-get update
添加 Microsoft 存储库后,再次运行 apt-get update 以使用 Microsoft 存储库更新软件包索引。
RUN apt-get install -y mssql-server-fts
此步骤安装全文搜索功能安装所需的 mssql-server-fts 包。
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
此步骤会清理所有不必要的软件包以释放磁盘空间。它会删除所有未使用的软件包。这是保持 Docker 镜像大小较小的重要步骤。
USER mssql
清理未使用的包后,我们将用户切换为mssql。这是用于执行 SQL Server 进程的用户。确保用户不是 root 非常重要,以避免任何安全问题。
EXPOSE 1433
此步骤公开端口 1433,这是默认的 SQL Server 端口。这对于允许从其他容器和主机进行访问非常重要。
CMD ["/opt/mssql/bin/sqlservr"]
此步骤设置容器启动 SQL Server 进程的默认命令。如果我们想启动容器来运行其他进程,则必须使用 CMD 命令在此处进行设置。