From e68d0b3529b8792081d0200a8bb2f961d3df0fd1 Mon Sep 17 00:00:00 2001 From: Pratik Tripathy Date: Sat, 22 Nov 2025 23:45:33 +0530 Subject: [PATCH] feat(nvim-docker-compose): Snippets for sample full-stack app --- .../.config/nvim/custom-snippets/package.json | 6 ++ common/.config/nvim/custom-snippets/yaml.json | 99 +++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 common/.config/nvim/custom-snippets/yaml.json diff --git a/common/.config/nvim/custom-snippets/package.json b/common/.config/nvim/custom-snippets/package.json index 6520fdd..08aa05a 100644 --- a/common/.config/nvim/custom-snippets/package.json +++ b/common/.config/nvim/custom-snippets/package.json @@ -8,6 +8,12 @@ ], "path": "./dockerfile.json" }, + { + "language": [ + "yaml" + ], + "path": "./yaml.json" + }, { "language": [ "rust" diff --git a/common/.config/nvim/custom-snippets/yaml.json b/common/.config/nvim/custom-snippets/yaml.json new file mode 100644 index 0000000..a4bef35 --- /dev/null +++ b/common/.config/nvim/custom-snippets/yaml.json @@ -0,0 +1,99 @@ +{ + "Web Full Stack Docker Compose": { + "prefix": "web-full-stack-docker-compose", + "description": "Template for web full-stack docker-compose", + "body": [ + "---", + "name: ${1:application-name}", + "services:", + " db:", + " image: ${2:postgres:latest}", + " networks:", + " - db-net", + " ports:", + " - ${3:5432}:${3}", + " volumes:", + " - pgdata:/var/lib/postgresql/data", + " environment:", + " - POSTGRES_PASSWORD=${4:postgres-login-password}", + " restart: unless-stopped", + " init: true", + " security_opt:", + " - no-new-privileges", + "", + " api:", + " image: ${5:backend-api-image}", + " build:", + " context: ${6:backend-api-code-directory}", + " dockerfile: ${7:backend-api-dockerfile}", + " networks:", + " - db-net", + " - public-net", + " depends_on:", + " - db", + " ports:", + " - ${8:8080}:${8}", + " environment:", + " - DATABASE_URL=postgres://postgres:${4}@db:${3}/postgres", + " restart: unless-stopped", + " init: true", + " security_opt:", + " - no-new-privileges", + " cap_drop:", + " - ALL", + " cap_add:", + " - CHOWN", + " - NET_BIND_SERVICE", + "", + " frontend-vite:", + " image: ${9:frontend-dev-image}", + " build:", + " context: ${10:frontend-code-directory}", + " dockerfile: ${11:frontend-dev-dockerfile}", + " networks:", + " - public-net", + " depends_on:", + " - api", + " ports:", + " - ${12:5173}:${12}", + " volumes:", + " - ${10}vite.config.js:/usr/src/app/vite.config.js:ro", + " init: true", + " security_opt:", + " - no-new-privileges", + " cap_drop:", + " - ALL", + " cap_add:", + " - CHOWN", + " - NET_BIND_SERVICE", + "", + " frontend-nginx:", + " image: ${13:frontend-nginx-image}", + " build:", + " context: ${10}", + " dockerfile: ${14:frontend-nginx-dockerfile}", + " networks:", + " - public-net", + " depends_on:", + " - api", + " ports:", + " - ${15:2000}:8080", + " restart: unless-stopped", + " init: true", + " security_opt:", + " - no-new-privileges", + " cap_drop:", + " - ALL", + " cap_add:", + " - CHOWN", + " - NET_BIND_SERVICE", + "", + "networks:", + " db-net:", + " public-net:", + "", + "volumes:", + " pgdata:" + ] + } +}