公司迁移服务器,原来用的是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 命令在此处进行设置。