Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM mcr.microsoft.com/devcontainers/dotnet:1-8.0-bookworm

# Install SQL Tools: SQLPackage and sqlcmd

Check failure on line 3 in .devcontainer/Dockerfile

View workflow job for this annotation

GitHub Actions / Check Spelling

`sqlcmd` is not a recognized word (unrecognized-spelling)
COPY mssql/installSQLtools.sh installSQLtools.sh

Check failure on line 4 in .devcontainer/Dockerfile

View workflow job for this annotation

GitHub Actions / Check Spelling

`Ltools` is not a recognized word (unrecognized-spelling)
RUN bash ./installSQLtools.sh \
&& apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts

# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>

# [Optional] Uncomment this line to install global node packages.
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install --lts && nvm use --lts && npm install -g typescript" 2>&1
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
57 changes: 57 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet-mssql
{
"name": ".NET (C#), Node.js (TypeScript) & MS SQL",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",

// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},

// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"mssql.connections": [
{
"server": "localhost,1433",
"database": "",
"authenticationType": "SqlLogin",
"user": "sa",
"password": "P@ssw0rd",

Check failure on line 24 in .devcontainer/devcontainer.json

View workflow job for this annotation

GitHub Actions / Check Spelling

`ssw` is not a recognized word (unrecognized-spelling)
"emptyPasswordInput": false,
"savePassword": false,
Comment on lines +22 to +26
"profileName": "mssql-container"
}
]
},

// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-dotnettools.csharp",
"ms-mssql.mssql",
"aaron-bond.better-comments"
]
}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [5000, 5001],
// "portsAttributes": {
// "5001": {
// "protocol": "https"
// }
// }

// postCreateCommand.sh parameters: $1=SA password, $2=dacpac path, $3=sql script(s) path

Check failure on line 49 in .devcontainer/devcontainer.json

View workflow job for this annotation

GitHub Actions / Check Spelling

`dacpac` is not a recognized word (unrecognized-spelling)
"postCreateCommand": "bash .devcontainer/mssql/postCreateCommand.sh 'P@ssw0rd' './bin/Debug/' './.devcontainer/mssql/'",
"features": {
Comment on lines +49 to +51
"ghcr.io/postfinance/devcontainer-features/dotnet:1": {}

Check failure on line 52 in .devcontainer/devcontainer.json

View workflow job for this annotation

GitHub Actions / Check Spelling

`postfinance` is not a recognized word (unrecognized-spelling)
}

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
32 changes: 32 additions & 0 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
version: '3'

services:
app:
build:
context: .
dockerfile: Dockerfile

volumes:
- ../..:/workspaces:cached

# Overrides default command so things don't shut down after the process ends.
command: sleep infinity

# Runs app on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
network_mode: service:db

# Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
# user: root

# Use "forwardPorts" in **devcontainer.json** to forward an app port locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)

Check failure on line 22 in .devcontainer/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Check Spelling

`Codespace` is not a recognized word (unrecognized-spelling)

db:
image: mcr.microsoft.com/mssql/server:2019-latest

Check notice on line 25 in .devcontainer/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Check Spelling

Line matches candidate pattern (container images) `image: [-\w./:@]+` (candidate-pattern)
restart: unless-stopped
environment:
SA_PASSWORD: P@ssw0rd
ACCEPT_EULA: Y
Comment on lines +27 to +29

# Add "forwardPorts": ["db:1433"] to **devcontainer.json** to forward MSSQL locally.
# (Adding the "ports" property to this file will not forward from a Codespace.)
15 changes: 15 additions & 0 deletions .devcontainer/mssql/installSQLtools.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

Check failure on line 1 in .devcontainer/mssql/installSQLtools.sh

View workflow job for this annotation

GitHub Actions / Check Spelling

`Ltools` is not a recognized word (check-file-path)
echo "Installing mssql-tools"
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | (OUT=$(apt-key add - 2>&1) || echo $OUT)
DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')

Check failure on line 4 in .devcontainer/mssql/installSQLtools.sh

View workflow job for this annotation

GitHub Actions / Check Spelling

`lsb` is not a recognized word (unrecognized-spelling)
CODENAME=$(lsb_release -cs)

Check failure on line 5 in .devcontainer/mssql/installSQLtools.sh

View workflow job for this annotation

GitHub Actions / Check Spelling

`CODENAME` is not a recognized word (unrecognized-spelling)
echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-${DISTRO}-${CODENAME}-prod ${CODENAME} main" > /etc/apt/sources.list.d/microsoft.list
apt-get update
ACCEPT_EULA=Y apt-get -y install unixodbc-dev msodbcsql17 libunwind8 mssql-tools

Check failure on line 8 in .devcontainer/mssql/installSQLtools.sh

View workflow job for this annotation

GitHub Actions / Check Spelling

`unixodbc` is not a recognized word (unrecognized-spelling)
Comment on lines +2 to +8

echo "Installing sqlpackage"
curl -sSL -o sqlpackage.zip "https://aka.ms/sqlpackage-linux"

Check notice on line 11 in .devcontainer/mssql/installSQLtools.sh

View workflow job for this annotation

GitHub Actions / Check Spelling

Line matches candidate pattern (curl arguments) `\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*` (candidate-pattern)
mkdir /opt/sqlpackage
unzip sqlpackage.zip -d /opt/sqlpackage
rm sqlpackage.zip
chmod a+x /opt/sqlpackage/sqlpackage
64 changes: 64 additions & 0 deletions .devcontainer/mssql/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/bin/bash
dacpac="false"
sqlfiles="false"
SApassword=$1
dacpath=$2
sqlpath=$3

echo "SELECT * FROM SYS.DATABASES" | dd of=testsqlconnection.sql
for i in {1..60};
do
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SApassword -d master -i testsqlconnection.sql > /dev/null
if [ $? -eq 0 ]
then
echo "SQL server ready"
break
else
echo "Not ready yet..."
sleep 1
fi
done
rm testsqlconnection.sql

for f in $dacpath/*
do
if [ $f == $dacpath/*".dacpac" ]
then
dacpac="true"
echo "Found dacpac $f"
fi
done

for f in $sqlpath/*
do
if [ $f == $sqlpath/*".sql" ]
then
sqlfiles="true"
echo "Found SQL file $f"
fi
done
Comment on lines +23 to +39

if [ $sqlfiles == "true" ]
then
for f in $sqlpath/*
do
if [ $f == $sqlpath/*".sql" ]
then
echo "Executing $f"
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $SApassword -d master -i $f
fi
done
fi
Comment on lines +41 to +51

if [ $dacpac == "true" ]
then
for f in $dacpath/*
do
if [ $f == $dacpath/*".dacpac" ]
then
dbname=$(basename $f ".dacpac")
echo "Deploying dacpac $f"
/opt/sqlpackage/sqlpackage /Action:Publish /SourceFile:$f /TargetServerName:localhost /TargetDatabaseName:$dbname /TargetUser:sa /TargetPassword:$SApassword
fi
done
fi
Comment on lines +53 to +64
2 changes: 2 additions & 0 deletions .devcontainer/mssql/setup.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
CREATE DATABASE ApplicationDB;
GO
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for more information:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
# https://containers.dev/guide/dependabot

version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly
Loading