46 lines
1.6 KiB
Docker
46 lines
1.6 KiB
Docker
# Use SQL Server 2022 Express for smaller footprint
|
|
FROM mcr.microsoft.com/mssql/server:2022-latest
|
|
|
|
# Set required environment variables
|
|
ENV ACCEPT_EULA=Y \
|
|
MSSQL_PID=Express \
|
|
SA_PASSWORD=YourStrong@Passw0rd \
|
|
DROP_DATABASE=false \
|
|
PATH="/opt/mssql-tools/bin:${PATH}"
|
|
|
|
# Install sqlcmd utility and other required packages
|
|
USER root
|
|
RUN apt-get update && \
|
|
apt-get install -y wget software-properties-common gnupg2 && \
|
|
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
|
|
add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)" && \
|
|
apt-get update && \
|
|
ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create app directory and schemas subdirectory in one layer
|
|
WORKDIR /usr/src/app
|
|
RUN mkdir -p schemas && \
|
|
mkdir -p sql_objects/{tables,constraints,foreign_keys,indexes/{clustered,nonclustered,unique_clustered},views,procedures} && \
|
|
chown -R mssql:mssql /usr/src/app && \
|
|
chmod -R 755 /usr/src/app
|
|
|
|
# Copy all SQL files and scripts in a single layer to reduce image size
|
|
COPY ./sql-server/schemas/*.sql ./schemas/
|
|
COPY ./sql-server/init.sql ./
|
|
COPY ./sql-server/setup.sh ./
|
|
COPY ./sql-server/extract_*.sh ./
|
|
|
|
# Fix line endings and make all scripts executable
|
|
RUN sed -i 's/\r$//' setup.sh && \
|
|
sed -i 's/\r$//' extract_*.sh && \
|
|
chmod +x setup.sh && \
|
|
chmod +x extract_*.sh && \
|
|
chown -R mssql:mssql /usr/src/app
|
|
|
|
# Switch back to mssql user
|
|
USER mssql
|
|
|
|
# Start SQL Server with our setup script
|
|
CMD /bin/bash ./setup.sh |