Inital commit
This commit is contained in:
14
.devcontainer/Dockerfile
Normal file
14
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
FROM mcr.microsoft.com/devcontainers/dotnet:1-8.0-bookworm
|
||||||
|
|
||||||
|
# Install SQL Tools: SQLPackage and sqlcmd
|
||||||
|
COPY mssql/installSQLtools.sh installSQLtools.sh
|
||||||
|
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
|
||||||
53
.devcontainer/devcontainer.json
Normal file
53
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
// 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",
|
||||||
|
"emptyPasswordInput": false,
|
||||||
|
"savePassword": false,
|
||||||
|
"profileName": "mssql-container"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
|
"extensions": [
|
||||||
|
"ms-dotnettools.csharp",
|
||||||
|
"ms-mssql.mssql"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 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
|
||||||
|
"postCreateCommand": "bash .devcontainer/mssql/postCreateCommand.sh 'P@ssw0rd' './bin/Debug/' './.devcontainer/mssql/'"
|
||||||
|
|
||||||
|
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||||
|
// "remoteUser": "root"
|
||||||
|
}
|
||||||
32
.devcontainer/docker-compose.yml
Normal file
32
.devcontainer/docker-compose.yml
Normal file
@@ -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.)
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mcr.microsoft.com/mssql/server:2019-latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
SA_PASSWORD: P@ssw0rd
|
||||||
|
ACCEPT_EULA: Y
|
||||||
|
|
||||||
|
# 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
.devcontainer/mssql/installSQLtools.sh
Normal file
15
.devcontainer/mssql/installSQLtools.sh
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
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:]')
|
||||||
|
CODENAME=$(lsb_release -cs)
|
||||||
|
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
|
||||||
|
|
||||||
|
echo "Installing sqlpackage"
|
||||||
|
curl -sSL -o sqlpackage.zip "https://aka.ms/sqlpackage-linux"
|
||||||
|
mkdir /opt/sqlpackage
|
||||||
|
unzip sqlpackage.zip -d /opt/sqlpackage
|
||||||
|
rm sqlpackage.zip
|
||||||
|
chmod a+x /opt/sqlpackage/sqlpackage
|
||||||
64
.devcontainer/mssql/postCreateCommand.sh
Normal file
64
.devcontainer/mssql/postCreateCommand.sh
Normal file
@@ -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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
2
.devcontainer/mssql/setup.sql
Normal file
2
.devcontainer/mssql/setup.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
CREATE DATABASE ApplicationDB;
|
||||||
|
GO
|
||||||
12
.github/dependabot.yml
vendored
Normal file
12
.github/dependabot.yml
vendored
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user