1- # use/sles image, you need to import it from SUSE.
2- # Info: https://www.suse.com/documentation/sles-12/singlehtml/book_sles_docker/book_sles_docker.html#Customizing_Pre-build_Images
3- FROM suse/sles12sp2
4-
5- ADD *.repo /etc/zypp/repos.d/
6- ADD *.service /etc/zypp/services.d/
7-
8- RUN zypper refs && zypper refresh
9-
10- RUN zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-preview.repo
11-
12- RUN zypper --gpg-auto-import-keys refresh
13-
14- RUN zypper install -y mssql-server
15-
16- COPY ./mssql.conf /var/opt/mssql/
17-
1+ ##
2+ # Assumptions
3+ # Thank you to our SUSE Partners for helping with this :)
4+ ##
5+ # 1. use a matching version to the underlying build host
6+ # 2. ensure it is registered to have access to needed repos
7+ # then leveraging container-suseconnect-zypp
8+ # e.g. zypper ref
9+ # Repository 'SLE-Module-Containers12-Pool' is up to date.
10+ # Repository 'SLE-Module-Containers12-Updates' is up to date.
11+ # Repository 'SLES12-SP5-Pool' is up to date.
12+ # Repository 'SLES12-SP5-Updates' is up to date.
13+ # All repositories have been refreshed.
14+ # 3. minimize the layers by consolidating commands
15+
16+ ##
17+ # Base image
18+ ##
19+ # Start with the appropriate base image
20+ FROM registry.suse.com/suse/sles12sp5
21+
22+ # add a needed (beyon minimal) dependency package this package is need so setcap can be used later on to provide the required privilages
23+ RUN zypper in --no-confirm libcap-progs
24+
25+ ##
26+ # Install the latest SQL 2019 build on SLES
27+ ##
28+ # Add product repos / packages
29+ # zypper refresh && \
30+
31+ RUN zypper addrepo --no-gpgcheck --refresh --check https://packages.microsoft.com/config/sles/12/mssql-server-2019.repo && \
32+ zypper --non-interactive install --no-confirm --auto-agree-with-licenses --auto-agree-with-product-licenses mssql-server
33+
34+ RUN zypper addrepo --no-gpgcheck --refresh --check https://packages.microsoft.com/config/sles/12/prod.repo && \
35+ ACCEPT_EULA=Y zypper --non-interactive install mssql-tools
36+
37+ # post the installation of SQL Server the mssql user/group is created
38+ # so set the right permissions to the msssql folder
39+ #
40+ RUN mkdir -p -m 770 /var/opt/mssql && chown -R mssql. /var/opt/mssql
41+
42+ # Grant sql the permissions to connect to ports <1024 as a non-root user
43+ #
44+ RUN setcap 'cap_net_bind_service+ep' /opt/mssql/bin/sqlservr
45+
46+ # Allow dumps from the non-root process
47+ #
48+ RUN setcap 'cap_sys_ptrace+ep' /opt/mssql/bin/paldumper
49+ RUN setcap 'cap_sys_ptrace+ep' /usr/bin/gdb
50+
51+ #ldconfig file because setcap causes the os to remove LD_LIBRARY_PATH
52+ # and other env variables that control dynamic linking
53+ #
54+ RUN mkdir -p /etc/ld.so.conf.d && touch /etc/ld.so.conf.d/mssql.conf
55+ RUN echo -e "# mssql libs\n/opt/mssql/lib" >> /etc/ld.so.conf.d/mssql.conf
56+ RUN ldconfig
57+
1858EXPOSE 1433
19-
20- CMD /opt/mssql/bin/sqlservr
59+
60+ USER mssql
61+
62+ CMD ["/opt/mssql/bin/sqlservr"]
0 commit comments