mirror of
https://github.com/dataforcanada/d4c-datapkg-orthoimagery.git
synced 2026-10-02 12:15:44 +02:00
Work on #152
This commit is contained in:
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
# initializeCommand for the dev container: runs on the *host* before the
|
||||
# container is created. The image is built locally (it embeds proprietary
|
||||
# SDKs, so it is not on a registry); without this check a missing image
|
||||
# surfaces as a confusing "pull access denied" from Docker.
|
||||
set -euo pipefail
|
||||
|
||||
image="${1:?usage: check-image.sh IMAGE:TAG}"
|
||||
|
||||
if ! docker image inspect "${image}" >/dev/null 2>&1; then
|
||||
cat >&2 <<EOF
|
||||
|
||||
ERROR: dev-container image '${image}' is not built yet.
|
||||
|
||||
Build it first (from the repo root; stage 1 takes a while, see docker/README.md):
|
||||
|
||||
docker/gdal/build.sh # stage 1: GDAL + ECW + MrSID
|
||||
docker/python/build.sh # stage 2: uv venv with rioxarray/rasterio/...
|
||||
|
||||
then reopen the folder in the container.
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "d4c-datapkg-orthoimagery",
|
||||
// Pre-built locally (it embeds proprietary SDKs, so it is not on a registry):
|
||||
// docker/gdal/build.sh -> dataforcanada/gdal-ecw-mrsid:3.13.3 (GDAL + ECW + MrSID)
|
||||
// docker/python/build.sh -> dataforcanada/gdal-ecw-mrsid-python:3.13.3 (+ uv venv: rioxarray, rasterio, ...)
|
||||
// linux/amd64 only. To bump GDAL, rebuild both stages and change this tag.
|
||||
"image": "dataforcanada/gdal-ecw-mrsid-python:3.13.3",
|
||||
// Fail with a clear message if the image has not been built yet.
|
||||
"initializeCommand": "bash ${localWorkspaceFolder}/.devcontainer/check-image.sh dataforcanada/gdal-ecw-mrsid-python:3.13.3",
|
||||
// Non-root user created in docker/python/Dockerfile; its UID/GID is remapped
|
||||
// to the host user's on first start so bind-mounted files keep sane ownership.
|
||||
"remoteUser": "d4c",
|
||||
"updateRemoteUserUID": true,
|
||||
// Assert (not print) that ECW + MrSID are usable from GDAL and rasterio.
|
||||
"postCreateCommand": "verify-gdal-drivers",
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"ms-python.python",
|
||||
"ms-python.vscode-pylance",
|
||||
"charliermarsh.ruff",
|
||||
"ms-toolsai.jupyter",
|
||||
"tamasfe.even-better-toml",
|
||||
"ms-azuretools.vscode-containers",
|
||||
"anthropic.claude-code"
|
||||
],
|
||||
"settings": {
|
||||
"python.defaultInterpreterPath": "/opt/venv/bin/python",
|
||||
"python.terminal.activateEnvironment": false,
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "charliermarsh.ruff"
|
||||
},
|
||||
"files.exclude": {
|
||||
"**/__pycache__": true,
|
||||
"**/.ruff_cache": true,
|
||||
"**/.pytest_cache": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user