rc-migration-tests/ef-migration/infrastructure/sql-server/Dockerfile
2025-02-05 01:18:33 +00:00

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