From 352b501c01ca8267057255b0ee0692264ea6bb9e Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:28:19 +0100 Subject: [PATCH 1/8] Version 18.4 --- .github/workflows/docker.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 239a143..e67c901 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -31,6 +31,13 @@ jobs: - ubuntu: 22.04 sqlcmd: "18.2.1.1-1" sqlcmd_minor: "18.2" + sqlcmd_major: "" + latest: false + package_suffix: "18" + package_path: "/opt/mssql-tools18" + - ubuntu: 24.04 + sqlcmd: "18.4.1.1-1" + sqlcmd_minor: "18.4" sqlcmd_major: "18" latest: true # newest possible version available -> tag as latest ubuntu-latest package_suffix: "18" From 913c56163652e98ebd1b0dc167517fd1a776e6f5 Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:45:08 +0100 Subject: [PATCH 2/8] Fix Docker build on 24.04 --- .github/workflows/docker.yml | 221 +++++++---------------------------- 1 file changed, 40 insertions(+), 181 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e67c901..a2b9b9f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,181 +1,40 @@ -name: Docker Image - -on: - push: - paths-ignore: - - "README.md" - - "LICENSE.md" - pull_request: - schedule: - - cron: "0 12 1-7 * 2" - -jobs: - docker-image-ubuntu: - strategy: - matrix: - version: - - ubuntu: 18.04 - sqlcmd: "17.4.1.1-1" - sqlcmd_minor: "17.4" - sqlcmd_major: "" - latest: false - package_suffix: "" - package_path: "/opt/mssql-tools" - - ubuntu: 22.04 - sqlcmd: "17.10.1.1-1" - sqlcmd_minor: "17.10" - sqlcmd_major: "17" - latest: false - package_suffix: "" - package_path: "/opt/mssql-tools" - - ubuntu: 22.04 - sqlcmd: "18.2.1.1-1" - sqlcmd_minor: "18.2" - sqlcmd_major: "" - latest: false - package_suffix: "18" - package_path: "/opt/mssql-tools18" - - ubuntu: 24.04 - sqlcmd: "18.4.1.1-1" - sqlcmd_minor: "18.4" - sqlcmd_major: "18" - latest: true # newest possible version available -> tag as latest ubuntu-latest - package_suffix: "18" - package_path: "/opt/mssql-tools18" - - env: - IMAGE_NAME_FULL: "fabiang/sqlcmd:${{ matrix.version.sqlcmd }}" - IMAGE_NAME_MINOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_minor }}" - IMAGE_NAME_MAJOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_major }}" - IMAGE_NAME_UBUNTU_FULL: "fabiang/sqlcmd:${{ matrix.version.sqlcmd }}-ubuntu${{ matrix.version.ubuntu }}" - IMAGE_NAME_UBUNTU_MINOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_minor }}-ubuntu${{ matrix.version.ubuntu }}" - IMAGE_NAME_UBUNTU_MAJOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_major }}-ubuntu${{ matrix.version.ubuntu }}" - IMAGE_LATEST: "fabiang/sqlcmd:latest" - IMAGE_LATEST_UBUNTU: "fabiang/sqlcmd:ubuntu-latest" - IMAGE_LATEST_UBUNTU_MINOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_minor }}-ubuntu" - IMAGE_LATEST_UBUNTU_MAJOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_major }}-ubuntu" - - runs-on: ubuntu-latest - - name: "Sqlcmd v${{ matrix.version.sqlcmd }} (Ubuntu ${{ matrix.version.ubuntu }})" - - steps: - - uses: actions/checkout@v3 - - - name: SQLServer Checksum - id: sqlserver-checksum - shell: bash - run: | - echo "checksum=$(curl --silent -L --header 'Accept: application/vnd.docker.distribution.manifest.v2+json' 'https://mcr.microsoft.com/v2/mssql/server/manifests/2022-latest' | jq -r '.config.digest')" >> $GITHUB_OUTPUT - - - name: Cache Docker Image - id: docker-image-cache - uses: actions/cache@v3 - with: - path: '*.tar' - key: docker-image-cache-${{ runner.os }}-${{ steps.sqlserver-checksum.outputs.checksum }} - - - name: Load SQLServer image - if: steps.docker-image-cache.outputs.cache-hit == 'true' - run: docker image load -i sqlserver.tar - - - name: Run SQL Server - run: | - docker run \ - --pull always \ - -e 'ACCEPT_EULA=Y' \ - -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' \ - -p 1433:1433 \ - -d \ - --name SQLServer \ - --rm \ - mcr.microsoft.com/mssql/server:2022-latest - - - name: Save SQLServer image - if: steps.docker-image-cache.outputs.cache-hit != 'true' - run: docker image save -o sqlserver.tar mcr.microsoft.com/mssql/server:2022-latest - - - uses: satackey/action-docker-layer-caching@v0.0.11 - continue-on-error: true - - - name: Build Image - run: | - docker build -f ubuntu/Dockerfile \ - -t '${{ env.IMAGE_NAME_FULL }}' \ - -t '${{ env.IMAGE_NAME_UBUNTU_FULL }}' \ - '--build-arg=UBUNTU_VERSION=${{ matrix.version.ubuntu }}' \ - '--build-arg=MSSQLTOOLS_VERSION=${{ matrix.version.sqlcmd }}' \ - '--build-arg=MSSQLTOOLS_SUFFIX=${{ matrix.version.package_suffix }}' \ - '--build-arg=MSSQLTOOLS_PATH=${{ matrix.version.package_path }}' \ - . - - - name: Wait for SQLServer to become available - uses: iFaxity/wait-on-action@v1.1.0 - with: - resource: tcp:localhost:1433 - timeout: 1800000 - interval: 5000 - log: true - - - name: Test image - run: | - docker run -t --rm --entrypoint='' --network=host \ - '${{ env.IMAGE_NAME_FULL }}' \ - sqlcmd -b -C -S 127.0.0.1,1433 -U sa -P 'yourStrong(!)Password' -Q 'SELECT @@VERSION' - - - name: Stop SQLServer - if: always() - run: docker stop SQLServer - - - name: Tag Minor - if: "${{ matrix.version.sqlcmd_minor != '' }}" - run: | - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_MINOR }}' - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_UBUNTU_MINOR }}' - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST_UBUNTU_MINOR }}' - - - name: Tag Major - if: "${{ matrix.version.sqlcmd_major != '' }}" - run: | - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_MAJOR }}' - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_UBUNTU_MAJOR }}' - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST_UBUNTU_MAJOR }}' - - - name: Tag Latest - if: "${{ matrix.version.latest == true }}" - run: | - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST }}' - docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST_UBUNTU }}' - - - name: Docker Hub login - if: "${{ github.ref == 'refs/heads/main' }}" - uses: azure/docker-login@v1 - with: - username: ${{ secrets.CONTAINER_REGISTRY_USERNAME }} - password: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} - - - name: Push Image - if: "${{ github.ref == 'refs/heads/main' }}" - run: | - docker push '${{ env.IMAGE_NAME_FULL }}' - docker push '${{ env.IMAGE_NAME_UBUNTU_FULL }}' - - - name: Push Image Minor - if: "${{ matrix.version.sqlcmd_minor != '' && github.ref == 'refs/heads/main' }}" - run: | - docker push '${{ env.IMAGE_NAME_MINOR }}' - docker push '${{ env.IMAGE_NAME_UBUNTU_MINOR }}' - docker push '${{ env.IMAGE_LATEST_UBUNTU_MINOR }}' - - - name: Push Image Major - if: "${{ matrix.version.sqlcmd_major != '' && github.ref == 'refs/heads/main' }}" - run: | - docker push '${{ env.IMAGE_NAME_MAJOR }}' - docker push '${{ env.IMAGE_NAME_UBUNTU_MAJOR }}' - docker push '${{ env.IMAGE_LATEST_UBUNTU_MAJOR }}' - - - name: Push Lastest - if: "${{ matrix.version.latest == true && github.ref == 'refs/heads/main' }}" - run: | - docker push '${{ env.IMAGE_LATEST }}' - docker push '${{ env.IMAGE_LATEST_UBUNTU }}' +ARG UBUNTU_VERSION=22.04 +FROM ubuntu:$UBUNTU_VERSION + +ARG MSSQLTOOLS_VERSION=18.2.1.1 +# Microsoft decided to have a suffix for newer versions of mssql-tools, e.g. mssql-tools18 +ARG MSSQLTOOLS_SUFFIX=18 +# and also the path changed on newer versions. It's a mess. +ARG MSSQLTOOLS_PATH=/opt/mssql-tools18 + +ENV PATH=$MSSQLTOOLS_PATH/bin:$PATH + +RUN apt-get -qqq update \ + && apt-get install -y curl apt-transport-https locales gnupg2 \ + # Helper command to convert \r\n to \n, + # since sqlcmd prints Windows line endings + dos2unix \ + && locale-gen "en_US.UTF-8" \ + \ + && export `grep "VERSION_ID" /etc/os-release | sed -e 's/^VERSION_ID=\"/VERSION_ID=/' -e 's/\"$//'` \ + && mkdir -p /usr/share/keyrings \ + && curl --fail https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list \ + -o /tmp/microsoft-prod.list | \ + if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ + sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' | \ + fi \ + && mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list \ + && cat /etc/apt/sources.list.d/microsoft.list \ + && curl --fail https://packages.microsoft.com/keys/microsoft.asc | \ + gpg --verbose --yes --no-tty --batch --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ + \ + && apt-get -qqq update \ + && ACCEPT_EULA=Y apt-get install -y mssql-tools$MSSQLTOOLS_SUFFIX=$MSSQLTOOLS_VERSION unixodbc-dev \ + && apt-get remove -y curl apt-transport-https gnupg2 \ + && rm -f /etc/apt/sources.list.d/msprod.list \ + && rm -rf /var/lib/apt/lists/* + +## should be set after locale was generated, overwise triggers warnings +ENV LANG="en_US.UTF-8" LANGUAGE="en_US.UTF-8" LC_ALL="en_US.UTF-8" + +ENTRYPOINT ["sqlcmd"] From e11feebf9565f47d7e51b513ee4e7229d904825a Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:47:53 +0100 Subject: [PATCH 3/8] Update docker.yml --- .github/workflows/docker.yml | 221 ++++++++++++++++++++++++++++------- 1 file changed, 181 insertions(+), 40 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a2b9b9f..e67c901 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,40 +1,181 @@ -ARG UBUNTU_VERSION=22.04 -FROM ubuntu:$UBUNTU_VERSION - -ARG MSSQLTOOLS_VERSION=18.2.1.1 -# Microsoft decided to have a suffix for newer versions of mssql-tools, e.g. mssql-tools18 -ARG MSSQLTOOLS_SUFFIX=18 -# and also the path changed on newer versions. It's a mess. -ARG MSSQLTOOLS_PATH=/opt/mssql-tools18 - -ENV PATH=$MSSQLTOOLS_PATH/bin:$PATH - -RUN apt-get -qqq update \ - && apt-get install -y curl apt-transport-https locales gnupg2 \ - # Helper command to convert \r\n to \n, - # since sqlcmd prints Windows line endings - dos2unix \ - && locale-gen "en_US.UTF-8" \ - \ - && export `grep "VERSION_ID" /etc/os-release | sed -e 's/^VERSION_ID=\"/VERSION_ID=/' -e 's/\"$//'` \ - && mkdir -p /usr/share/keyrings \ - && curl --fail https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list \ - -o /tmp/microsoft-prod.list | \ - if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ - sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' | \ - fi \ - && mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list \ - && cat /etc/apt/sources.list.d/microsoft.list \ - && curl --fail https://packages.microsoft.com/keys/microsoft.asc | \ - gpg --verbose --yes --no-tty --batch --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ - \ - && apt-get -qqq update \ - && ACCEPT_EULA=Y apt-get install -y mssql-tools$MSSQLTOOLS_SUFFIX=$MSSQLTOOLS_VERSION unixodbc-dev \ - && apt-get remove -y curl apt-transport-https gnupg2 \ - && rm -f /etc/apt/sources.list.d/msprod.list \ - && rm -rf /var/lib/apt/lists/* - -## should be set after locale was generated, overwise triggers warnings -ENV LANG="en_US.UTF-8" LANGUAGE="en_US.UTF-8" LC_ALL="en_US.UTF-8" - -ENTRYPOINT ["sqlcmd"] +name: Docker Image + +on: + push: + paths-ignore: + - "README.md" + - "LICENSE.md" + pull_request: + schedule: + - cron: "0 12 1-7 * 2" + +jobs: + docker-image-ubuntu: + strategy: + matrix: + version: + - ubuntu: 18.04 + sqlcmd: "17.4.1.1-1" + sqlcmd_minor: "17.4" + sqlcmd_major: "" + latest: false + package_suffix: "" + package_path: "/opt/mssql-tools" + - ubuntu: 22.04 + sqlcmd: "17.10.1.1-1" + sqlcmd_minor: "17.10" + sqlcmd_major: "17" + latest: false + package_suffix: "" + package_path: "/opt/mssql-tools" + - ubuntu: 22.04 + sqlcmd: "18.2.1.1-1" + sqlcmd_minor: "18.2" + sqlcmd_major: "" + latest: false + package_suffix: "18" + package_path: "/opt/mssql-tools18" + - ubuntu: 24.04 + sqlcmd: "18.4.1.1-1" + sqlcmd_minor: "18.4" + sqlcmd_major: "18" + latest: true # newest possible version available -> tag as latest ubuntu-latest + package_suffix: "18" + package_path: "/opt/mssql-tools18" + + env: + IMAGE_NAME_FULL: "fabiang/sqlcmd:${{ matrix.version.sqlcmd }}" + IMAGE_NAME_MINOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_minor }}" + IMAGE_NAME_MAJOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_major }}" + IMAGE_NAME_UBUNTU_FULL: "fabiang/sqlcmd:${{ matrix.version.sqlcmd }}-ubuntu${{ matrix.version.ubuntu }}" + IMAGE_NAME_UBUNTU_MINOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_minor }}-ubuntu${{ matrix.version.ubuntu }}" + IMAGE_NAME_UBUNTU_MAJOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_major }}-ubuntu${{ matrix.version.ubuntu }}" + IMAGE_LATEST: "fabiang/sqlcmd:latest" + IMAGE_LATEST_UBUNTU: "fabiang/sqlcmd:ubuntu-latest" + IMAGE_LATEST_UBUNTU_MINOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_minor }}-ubuntu" + IMAGE_LATEST_UBUNTU_MAJOR: "fabiang/sqlcmd:${{ matrix.version.sqlcmd_major }}-ubuntu" + + runs-on: ubuntu-latest + + name: "Sqlcmd v${{ matrix.version.sqlcmd }} (Ubuntu ${{ matrix.version.ubuntu }})" + + steps: + - uses: actions/checkout@v3 + + - name: SQLServer Checksum + id: sqlserver-checksum + shell: bash + run: | + echo "checksum=$(curl --silent -L --header 'Accept: application/vnd.docker.distribution.manifest.v2+json' 'https://mcr.microsoft.com/v2/mssql/server/manifests/2022-latest' | jq -r '.config.digest')" >> $GITHUB_OUTPUT + + - name: Cache Docker Image + id: docker-image-cache + uses: actions/cache@v3 + with: + path: '*.tar' + key: docker-image-cache-${{ runner.os }}-${{ steps.sqlserver-checksum.outputs.checksum }} + + - name: Load SQLServer image + if: steps.docker-image-cache.outputs.cache-hit == 'true' + run: docker image load -i sqlserver.tar + + - name: Run SQL Server + run: | + docker run \ + --pull always \ + -e 'ACCEPT_EULA=Y' \ + -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' \ + -p 1433:1433 \ + -d \ + --name SQLServer \ + --rm \ + mcr.microsoft.com/mssql/server:2022-latest + + - name: Save SQLServer image + if: steps.docker-image-cache.outputs.cache-hit != 'true' + run: docker image save -o sqlserver.tar mcr.microsoft.com/mssql/server:2022-latest + + - uses: satackey/action-docker-layer-caching@v0.0.11 + continue-on-error: true + + - name: Build Image + run: | + docker build -f ubuntu/Dockerfile \ + -t '${{ env.IMAGE_NAME_FULL }}' \ + -t '${{ env.IMAGE_NAME_UBUNTU_FULL }}' \ + '--build-arg=UBUNTU_VERSION=${{ matrix.version.ubuntu }}' \ + '--build-arg=MSSQLTOOLS_VERSION=${{ matrix.version.sqlcmd }}' \ + '--build-arg=MSSQLTOOLS_SUFFIX=${{ matrix.version.package_suffix }}' \ + '--build-arg=MSSQLTOOLS_PATH=${{ matrix.version.package_path }}' \ + . + + - name: Wait for SQLServer to become available + uses: iFaxity/wait-on-action@v1.1.0 + with: + resource: tcp:localhost:1433 + timeout: 1800000 + interval: 5000 + log: true + + - name: Test image + run: | + docker run -t --rm --entrypoint='' --network=host \ + '${{ env.IMAGE_NAME_FULL }}' \ + sqlcmd -b -C -S 127.0.0.1,1433 -U sa -P 'yourStrong(!)Password' -Q 'SELECT @@VERSION' + + - name: Stop SQLServer + if: always() + run: docker stop SQLServer + + - name: Tag Minor + if: "${{ matrix.version.sqlcmd_minor != '' }}" + run: | + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_MINOR }}' + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_UBUNTU_MINOR }}' + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST_UBUNTU_MINOR }}' + + - name: Tag Major + if: "${{ matrix.version.sqlcmd_major != '' }}" + run: | + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_MAJOR }}' + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_NAME_UBUNTU_MAJOR }}' + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST_UBUNTU_MAJOR }}' + + - name: Tag Latest + if: "${{ matrix.version.latest == true }}" + run: | + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST }}' + docker tag '${{ env.IMAGE_NAME_FULL }}' '${{ env.IMAGE_LATEST_UBUNTU }}' + + - name: Docker Hub login + if: "${{ github.ref == 'refs/heads/main' }}" + uses: azure/docker-login@v1 + with: + username: ${{ secrets.CONTAINER_REGISTRY_USERNAME }} + password: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} + + - name: Push Image + if: "${{ github.ref == 'refs/heads/main' }}" + run: | + docker push '${{ env.IMAGE_NAME_FULL }}' + docker push '${{ env.IMAGE_NAME_UBUNTU_FULL }}' + + - name: Push Image Minor + if: "${{ matrix.version.sqlcmd_minor != '' && github.ref == 'refs/heads/main' }}" + run: | + docker push '${{ env.IMAGE_NAME_MINOR }}' + docker push '${{ env.IMAGE_NAME_UBUNTU_MINOR }}' + docker push '${{ env.IMAGE_LATEST_UBUNTU_MINOR }}' + + - name: Push Image Major + if: "${{ matrix.version.sqlcmd_major != '' && github.ref == 'refs/heads/main' }}" + run: | + docker push '${{ env.IMAGE_NAME_MAJOR }}' + docker push '${{ env.IMAGE_NAME_UBUNTU_MAJOR }}' + docker push '${{ env.IMAGE_LATEST_UBUNTU_MAJOR }}' + + - name: Push Lastest + if: "${{ matrix.version.latest == true && github.ref == 'refs/heads/main' }}" + run: | + docker push '${{ env.IMAGE_LATEST }}' + docker push '${{ env.IMAGE_LATEST_UBUNTU }}' From 02f344c744bf031d0e2c97ef0b8ad59bfb82ab0a Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:48:13 +0100 Subject: [PATCH 4/8] Update Dockerfile --- ubuntu/Dockerfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ubuntu/Dockerfile b/ubuntu/Dockerfile index c69a347..a2b9b9f 100644 --- a/ubuntu/Dockerfile +++ b/ubuntu/Dockerfile @@ -17,12 +17,16 @@ RUN apt-get -qqq update \ && locale-gen "en_US.UTF-8" \ \ && export `grep "VERSION_ID" /etc/os-release | sed -e 's/^VERSION_ID=\"/VERSION_ID=/' -e 's/\"$//'` \ - && mkdir -p /etc/apt/keyrings/ \ - && curl --fail https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list | \ - sed -E 's#deb\s+\[#deb [signed-by=/etc/apt/keyrings/microsoft.gpg #; t; q1' | \ - tee /etc/apt/sources.list.d/microsoft.list \ + && mkdir -p /usr/share/keyrings \ + && curl --fail https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list \ + -o /tmp/microsoft-prod.list | \ + if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ + sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' | \ + fi \ + && mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list \ + && cat /etc/apt/sources.list.d/microsoft.list \ && curl --fail https://packages.microsoft.com/keys/microsoft.asc | \ - gpg --verbose --yes --no-tty --batch --dearmor -o /etc/apt/keyrings/microsoft.gpg \ + gpg --verbose --yes --no-tty --batch --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ \ && apt-get -qqq update \ && ACCEPT_EULA=Y apt-get install -y mssql-tools$MSSQLTOOLS_SUFFIX=$MSSQLTOOLS_VERSION unixodbc-dev \ From 9c821cf1416284bc5e1aa3cff7ee46a13a8cd047 Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:52:19 +0100 Subject: [PATCH 5/8] Update Dockerfile --- ubuntu/Dockerfile | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/ubuntu/Dockerfile b/ubuntu/Dockerfile index a2b9b9f..42bb388 100644 --- a/ubuntu/Dockerfile +++ b/ubuntu/Dockerfile @@ -16,23 +16,21 @@ RUN apt-get -qqq update \ dos2unix \ && locale-gen "en_US.UTF-8" \ \ - && export `grep "VERSION_ID" /etc/os-release | sed -e 's/^VERSION_ID=\"/VERSION_ID=/' -e 's/\"$//'` \ + && export $(grep "VERSION_ID" /etc/os-release | sed -e 's/^VERSION_ID=\"/VERSION_ID=/' -e 's/\"$//') \ && mkdir -p /usr/share/keyrings \ - && curl --fail https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list \ - -o /tmp/microsoft-prod.list | \ - if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ - sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' | \ - fi \ - && mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list \ - && cat /etc/apt/sources.list.d/microsoft.list \ - && curl --fail https://packages.microsoft.com/keys/microsoft.asc | \ - gpg --verbose --yes --no-tty --batch --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ + && curl --fail --show-error https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list -o /tmp/microsoft-prod.list \ + && if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ + sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' /tmp/microsoft-prod.list > /etc/apt/sources.list.d/microsoft.list; \ + else \ + mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list; \ + fi \ + && curl --fail --show-error https://packages.microsoft.com/keys/microsoft.asc | \ + gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ \ && apt-get -qqq update \ - && ACCEPT_EULA=Y apt-get install -y mssql-tools$MSSQLTOOLS_SUFFIX=$MSSQLTOOLS_VERSION unixodbc-dev \ - && apt-get remove -y curl apt-transport-https gnupg2 \ - && rm -f /etc/apt/sources.list.d/msprod.list \ - && rm -rf /var/lib/apt/lists/* + && ACCEPT_EULA=Y apt-get install -y --no-install-recommends mssql-tools$MSSQLTOOLS_SUFFIX=$MSSQLTOOLS_VERSION unixodbc-dev \ + && apt-get autoremove -y && apt-get clean \ + && rm -rf /tmp/* /var/lib/apt/lists/* ## should be set after locale was generated, overwise triggers warnings ENV LANG="en_US.UTF-8" LANGUAGE="en_US.UTF-8" LC_ALL="en_US.UTF-8" From 133166a8b6d6bc25f0f7e9343567cbd675de912a Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:55:53 +0100 Subject: [PATCH 6/8] Update Dockerfile --- ubuntu/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ubuntu/Dockerfile b/ubuntu/Dockerfile index 42bb388..947209c 100644 --- a/ubuntu/Dockerfile +++ b/ubuntu/Dockerfile @@ -20,7 +20,8 @@ RUN apt-get -qqq update \ && mkdir -p /usr/share/keyrings \ && curl --fail --show-error https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list -o /tmp/microsoft-prod.list \ && if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ - sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' /tmp/microsoft-prod.list > /etc/apt/sources.list.d/microsoft.list; \ + sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' /tmp/microsoft-prod.list > /etc/apt/sources.list.d/microsoft.list; + rm /tmp/microsoft-prod.list; \ else \ mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list; \ fi \ From 8bd65c4897e764539045feb02c2d1949dee2389b Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:57:22 +0100 Subject: [PATCH 7/8] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7625850..fb5cfdf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ Sqlcmd – command line tool for Microsoft SQL Server. ## Available tags -* 18.2.1.1-1-ubuntu22.04, 18.2.1.1-1, 18.2-ubuntu, 18.2, 18-ubuntu, 18, latest-ubuntu, latest +* 18.4.1.1-1-ubuntu24.04, 18.4.1.1-1, 18.4-ubuntu, 18.4, 18-ubuntu, 18, latest-ubuntu, latest +* 18.2.1.1-1-ubuntu22.04, 18.2.1.1-1, 18.2-ubuntu, 18.2, * 17.10.1.1-1-ubuntu22.04, 17.10.1.1-1, 17.10-ubuntu, 17.10, 17-ubuntu, 17 * 17.4.1.1-1-ubuntu18.04, 17.4.1.1-1, 17.4-ubuntu, 17.4 From d3629b42f69b09ca011af0d39f0a84653c310342 Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Fri, 27 Dec 2024 12:58:32 +0100 Subject: [PATCH 8/8] Update Dockerfile --- ubuntu/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubuntu/Dockerfile b/ubuntu/Dockerfile index 947209c..8b7ac37 100644 --- a/ubuntu/Dockerfile +++ b/ubuntu/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get -qqq update \ && mkdir -p /usr/share/keyrings \ && curl --fail --show-error https://packages.microsoft.com/config/ubuntu/$VERSION_ID/prod.list -o /tmp/microsoft-prod.list \ && if ! grep -q "signed-by=" /tmp/microsoft-prod.list; then \ - sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' /tmp/microsoft-prod.list > /etc/apt/sources.list.d/microsoft.list; + sed -E 's#deb\s+\[#deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg #; t; q1' /tmp/microsoft-prod.list > /etc/apt/sources.list.d/microsoft.list; \ rm /tmp/microsoft-prod.list; \ else \ mv /tmp/microsoft-prod.list /etc/apt/sources.list.d/microsoft.list; \