diff --git a/.cursor/rules/git-workflow.mdc b/.cursor/rules/git-workflow.mdc index b93c988..e9b6fc9 100644 --- a/.cursor/rules/git-workflow.mdc +++ b/.cursor/rules/git-workflow.mdc @@ -1,5 +1,45 @@ --- -description: -globs: +description: +globs: alwaysApply: false --- + +# Git Workflow + +This document describes the standard git workflow for this project. + +## Commit Guidelines + +1. Use descriptive commit messages +2. Use 'FIXUP:' prefix for quick fixes to existing code +3. Add 'HOTFIX:' prefix for emergency fixes +4. Document significant changes in your commit message + +## Efficient Git Commands + +Always use the one-liner command to save time when committing changes: + +```bash +git add . && git commit -m "Your message here" && git push +``` + +### Fixing Previous Commits + +When fixing issues in previous commits, use the FIXUP prefix: + +```bash +git add . && git commit -m "FIXUP: Brief description of the fix" && git push +``` + +## Branch Strategy + +- `main` - Main development branch +- `staging` - For staging environment testing +- `production` - Production-ready code + +## Quick Reference + +Common patterns: +- New feature: `git add . && git commit -m "Add new feature X" && git push` +- Bug fix: `git add . && git commit -m "FIXUP: Fix issue with X" && git push` +- Emergency: `git add . && git commit -m "HOTFIX: Resolve critical issue X" && git push` diff --git a/README.md b/README.md index f3bf1bc..a467c98 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + # Template Project This is a template project that follows a standardized structure for Docker-based applications. diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 6f340cd..7762c4a 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -2,28 +2,28 @@ services: template: build: - context: ./docker/template - dockerfile: Dockerfile + context: ./docker/easy-appointments + dockerfile: Dockerfile.staging image: template:dev + environment: + BASE_URL: "http://localhost" + DEBUG_MODE: "TRUE" + DB_HOST: "mariadb" + DB_NAME: "easyappointments" + DB_USERNAME: "root" + DB_PASSWORD: "secret" volumes: - - ./docker/template/src:/scratch + - ./docker/easy-appointments/src:/scratch - ./temp:/temp networks: - dev_network + ports: + - "8080:80" - # Add any additional services you need here - # Example: - # db: - # image: postgres:14 - # environment: - # - POSTGRES_PASSWORD=postgres - # - POSTGRES_USER=postgres - # - POSTGRES_DB=template - # volumes: - # - ./temp/postgres-data:/var/lib/postgresql/data - # networks: - # - dev_network - -networks: - dev_network: - driver: bridge \ No newline at end of file + mariadb: + build: + context: ./docker/mariadb + dockerfile: Dockerfile.staging + image: git.nixc.us/nixius/template:staging-mariadb + networks: + - dev_network \ No newline at end of file diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 930125d..3d70963 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -2,6 +2,12 @@ services: template: build: - context: ./docker/template + context: ./docker/easy-appointments dockerfile: Dockerfile.production - image: git.nixc.us/nixius/template:production \ No newline at end of file + image: git.nixc.us/nixius/easy-appointments:production + + mariadb: + build: + context: ./docker/mariadb + dockerfile: Dockerfile.production + image: git.nixc.us/nixius/easy-appointments:production-mariadb \ No newline at end of file diff --git a/docker-compose.staging.yml b/docker-compose.staging.yml index a96c565..d520a7a 100644 --- a/docker-compose.staging.yml +++ b/docker-compose.staging.yml @@ -2,6 +2,12 @@ services: template: build: - context: ./docker/template + context: ./docker/easy-appointments dockerfile: Dockerfile.staging - image: git.nixc.us/colin/template:staging \ No newline at end of file + image: git.nixc.us/colin/easy-appointments:staging + + mariadb: + build: + context: ./docker/mariadb + dockerfile: Dockerfile.staging + image: git.nixc.us/colin/easy-appointments:staging-mariadb \ No newline at end of file diff --git a/docker-compose.test.yml b/docker-compose.test.yml index e26e989..fc96a04 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -2,9 +2,15 @@ services: template: build: - context: ./docker/template - dockerfile: Dockerfile + context: ./docker/easy-appointments + dockerfile: Dockerfile.staging image: template:test volumes: - - ./docker/template/src:/scratch - - ./temp:/temp \ No newline at end of file + - ./docker/easy-appointments/src:/scratch + - ./temp:/temp + + mariadb: + build: + context: ./docker/mariadb + dockerfile: Dockerfile.staging + image: git.nixc.us/nixius/template:staging-mariadb \ No newline at end of file diff --git a/docker/template/Dockerfile.production b/docker/easy-appointments/Dockerfile.production similarity index 100% rename from docker/template/Dockerfile.production rename to docker/easy-appointments/Dockerfile.production diff --git a/docker/template/Dockerfile b/docker/easy-appointments/Dockerfile.staging similarity index 100% rename from docker/template/Dockerfile rename to docker/easy-appointments/Dockerfile.staging diff --git a/docker/template/src/.gitkeep b/docker/easy-appointments/src/.gitkeep similarity index 100% rename from docker/template/src/.gitkeep rename to docker/easy-appointments/src/.gitkeep diff --git a/docker/mariadb/Dockerfile.production b/docker/mariadb/Dockerfile.production new file mode 100644 index 0000000..5e56ef0 --- /dev/null +++ b/docker/mariadb/Dockerfile.production @@ -0,0 +1 @@ +FROM git.nixc.us/nixius/template:staging-mariadb diff --git a/docker/mariadb/Dockerfile.staging b/docker/mariadb/Dockerfile.staging new file mode 100644 index 0000000..787e7f0 --- /dev/null +++ b/docker/mariadb/Dockerfile.staging @@ -0,0 +1 @@ +FROM mariadb:10.5 diff --git a/docker/mariadb/src/.gitkeep b/docker/mariadb/src/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/stack.production.yml b/stack.production.yml index 6f0317d..67f8e22 100644 --- a/stack.production.yml +++ b/stack.production.yml @@ -1,10 +1,11 @@ networks: traefik: external: true + default: services: - template: - image: git.nixc.us/nixius/template:production + easy-appointments: + image: git.nixc.us/nixius/easy-appointments:production deploy: replicas: 1 restart_policy: @@ -20,52 +21,36 @@ services: order: stop-first networks: - traefik + - default labels: - traefik.enable=true - - traefik.http.routers.production_template.rule=Host(`template.nixc.us`) - - traefik.http.routers.production_template.entrypoints=websecure - - traefik.http.routers.production_template.tls=true - - traefik.http.routers.production_template.tls.certresolver=letsencryptresolver - - traefik.http.services.production_template.loadbalancer.server.port=3000 - # - traefik.http.services.production_template.loadbalancer.healthcheck.path=/health - # - traefik.http.services.production_template.loadbalancer.healthcheck.interval=30s - # - traefik.http.services.production_template.loadbalancer.healthcheck.timeout=5s - - traefik.http.routers.production_template.middlewares=secure-headers - - midtownplaydio: - image: git.nixc.us/nixius/midtownplaydio:production - networks: - - traefik + - traefik.http.routers.production_easy-appointments.rule=Host(`easy-appointments.colinknapp.com`) + - traefik.http.routers.production_easy-appointments.entrypoints=websecure + - traefik.http.routers.production_easy-appointments.tls=true + - traefik.http.routers.production_easy-appointments.tls.certresolver=letsencryptresolver + - traefik.http.services.production_easy-appointments.loadbalancer.server.port=80 + # - traefik.http.services.production_easy-appointments.loadbalancer.healthcheck.path=/health + # - traefik.http.services.production_easy-appointments.loadbalancer.healthcheck.interval=30s + # - traefik.http.services.production_easy-appointments.loadbalancer.healthcheck.timeout=5s + - traefik.http.routers.production_easy-appointments.middlewares=secure-headers + + mariadb: + image: git.nixc.us/nixius/mariadb:production deploy: replicas: 1 - placement: - constraints: - - node.hostname == macmini1 - - # update_config: - # delay: 0s - # parallelism: 2 - # order: start-first - labels: - traefik.enable: "true" - traefik.http.routers.production_midtownplaydio.rule: "Host(`midtownplaydio.nixc.us`)" - traefik.http.routers.production_midtownplaydio.entrypoints: "websecure" - traefik.http.routers.production_midtownplaydio.tls: "true" - traefik.http.routers.production_midtownplaydio.tls.certresolver: "letsencryptresolver" - traefik.http.routers.production_midtownplaydio.middlewares: "secure-headers" - traefik.http.services.production_midtownplaydio.loadbalancer.server.port: "3000" - traefik.docker.network: "traefik" - # traefik.http.services.production_midtownplaydio.loadbalancer.healthcheck.path: "/health" - # traefik.http.services.production_midtownplaydio.loadbalancer.healthcheck.interval: "30s" - # traefik.http.services.production_midtownplaydio.loadbalancer.healthcheck.timeout: "5s" - - # Security headers middleware - traefik.http.middlewares.secure-headers.headers.stsSeconds: 63072000 - traefik.http.middlewares.secure-headers.headers.stsIncludeSubdomains: "true" - traefik.http.middlewares.secure-headers.headers.stsPreload: "true" - traefik.http.middlewares.secure-headers.headers.forceSTSHeader: "true" - traefik.http.middlewares.secure-headers.headers.frameDeny: "true" - traefik.http.middlewares.secure-headers.headers.contentTypeNosniff: "true" - traefik.http.middlewares.secure-headers.headers.browserXssFilter: "true" - traefik.http.middlewares.secure-headers.headers.referrerPolicy: "no-referrer" - traefik.http.middlewares.secure-headers.headers.featurePolicy: "camera 'none'; geolocation 'none'; microphone 'none'; payment 'none'; usb 'none'; vr 'none'" + restart_policy: + condition: on-failure + max_attempts: 3 + environment: + - MARIADB_ROOT_PASSWORD=secret + - MARIADB_DATABASE=easyappointments + networks: + - default + volumes: + - mariadb_data:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MARIADB_ROOT_PASSWORD"] + interval: 10s + retries: 5 + start_period: 30s + timeout: 5s diff --git a/stack.staging.yml b/stack.staging.yml index ea38fa1..7175df0 100644 --- a/stack.staging.yml +++ b/stack.staging.yml @@ -5,7 +5,7 @@ networks: services: template: - image: git.nixc.us/nixius/template:staging + image: git.nixc.us/nixius/easy-appointments:staging deploy: replicas: 1 restart_policy: @@ -19,15 +19,44 @@ services: parallelism: 1 delay: 10s order: stop-first + environment: + BASE_URL: "https://staging.cal.colinknapp.com" + DEBUG_MODE: "FALSE" + DB_HOST: "mariadb" + DB_NAME: "easyappointments" + DB_USERNAME: "root" + DB_PASSWORD: "secret" networks: - traefik + - default labels: - traefik.enable=true - - traefik.http.routers.staging_template.rule=Host(`staging.template.nixc.us`) - - traefik.http.routers.staging_template.entrypoints=websecure - - traefik.http.routers.staging_template.tls=true - - traefik.http.routers.staging_template.tls.certresolver=letsencryptresolver - - traefik.http.services.staging_template.loadbalancer.server.port=3000 - # - traefik.http.services.staging_template.loadbalancer.healthcheck.path=/health - # - traefik.http.services.staging_template.loadbalancer.healthcheck.interval=30s - # - traefik.http.services.staging_template.loadbalancer.healthcheck.timeout=5s + - traefik.http.routers.staging_easy-appointments.rule=Host(`staging.cal.colinknapp.com`) + - traefik.http.routers.staging_easy-appointments.entrypoints=websecure + - traefik.http.routers.staging_easy-appointments.tls=true + - traefik.http.routers.staging_easy-appointments.tls.certresolver=letsencryptresolver + - traefik.http.services.staging_easy-appointments.loadbalancer.server.port=80 + + mariadb: + image: git.nixc.us/nixius/easy-appointments:staging-mariadb + deploy: + replicas: 1 + restart_policy: + condition: on-failure + max_attempts: 3 + environment: + - MARIADB_ROOT_PASSWORD=secret + - MARIADB_DATABASE=easyappointments + networks: + - default + volumes: + - mariadb_data:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MARIADB_ROOT_PASSWORD"] + interval: 10s + retries: 5 + start_period: 30s + timeout: 5s + +volumes: + mariadb_data: diff --git a/temp/build-test-run.log b/temp/build-test-run.log index 7a02eea..b180759 100644 --- a/temp/build-test-run.log +++ b/temp/build-test-run.log @@ -1,106 +1,206 @@ -Build started at Wed Apr 23 10:27:39 EDT 2025 +Build started at Wed Apr 23 10:57:52 EDT 2025 Building Docker images... #0 building with "desktop-linux" instance using docker driver -#1 [template internal] load build definition from Dockerfile -#1 transferring dockerfile: 279B done +#1 [mariadb internal] load build definition from Dockerfile.staging +#1 transferring dockerfile: 100B done #1 DONE 0.0s -#2 [template internal] load metadata for docker.io/library/alpine:3.18 -#2 DONE 4.5s +#2 [template internal] load build definition from Dockerfile.staging +#2 transferring dockerfile: 287B done +#2 DONE 0.0s -#3 [template internal] load .dockerignore -#3 transferring context: 2B done -#3 DONE 0.0s +#3 [mariadb internal] load metadata for docker.io/library/mariadb:10.5 +#3 ... -#4 [template 1/3] FROM docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f -#4 resolve docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f 0.0s done -#4 sha256:95459497489f07b9d71d294c852a09f9bbf1af51bb35db752a31f6f48935e293 0B / 3.34MB 0.2s -#4 sha256:95459497489f07b9d71d294c852a09f9bbf1af51bb35db752a31f6f48935e293 1.05MB / 3.34MB 0.3s -#4 sha256:95459497489f07b9d71d294c852a09f9bbf1af51bb35db752a31f6f48935e293 3.34MB / 3.34MB 0.4s done -#4 extracting sha256:95459497489f07b9d71d294c852a09f9bbf1af51bb35db752a31f6f48935e293 0.1s done -#4 DONE 0.5s +#4 [template internal] load metadata for docker.io/library/alpine:3.18 +#4 DONE 0.6s -#5 [template 2/3] RUN mkdir -p /scratch /temp -#5 DONE 0.2s +#5 [template internal] load .dockerignore +#5 transferring context: 2B done +#5 DONE 0.0s -#6 [template 3/3] WORKDIR /scratch +#6 [template 1/3] FROM docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f +#6 resolve docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f done #6 DONE 0.0s -#7 [template] exporting to image -#7 exporting layers 0.0s done -#7 exporting manifest sha256:15b202f67217697a010a43b0d8ef636c8bd4a00a7258dc8334ce1220aa5ad10d done -#7 exporting config sha256:e4f5b35710a25e9116a133bde6255ccc3f91a39c9b99e4f4a44d7eaf27024e7d done -#7 exporting attestation manifest sha256:1381754eaa2ff6ca7277a69421f9a2e9bfd02920098acac0b6d9a0d87b4abe9c done -#7 exporting manifest list sha256:59daf10da628c4a24e9396d0656c99dff8d7036f3b29e0ec6d7392c1e72adfc0 done -#7 naming to docker.io/library/template:dev done -#7 unpacking to docker.io/library/template:dev 0.0s done -#7 DONE 0.1s +#7 [template 2/3] RUN mkdir -p /scratch /temp +#7 CACHED -#8 [template] resolving provenance for metadata file -#8 DONE 0.0s +#8 [template 3/3] WORKDIR /scratch +#8 CACHED + +#9 [template] exporting to image +#9 exporting layers done +#9 exporting manifest sha256:df84d578a4eccddc7f7d15d3c610d35803bd529ce0f90f1eb1099bbf982d9341 done +#9 exporting config sha256:c48b4c75f46025fb4e6a7ba120f44c3a0f8bb216a3724a138aacaac8bdb20d79 done +#9 exporting attestation manifest sha256:475763fe07bd398483134834afcb34d685d06091f193097a8de2d084172d70a6 done +#9 exporting manifest list sha256:9a5d2937d479459aab9d19d0462b88f6806c5129a4fd5cb1d91e0f593d99c7f1 done +#9 naming to docker.io/library/template:dev done +#9 unpacking to docker.io/library/template:dev done +#9 DONE 0.0s + +#10 [template] resolving provenance for metadata file +#10 DONE 0.0s + +#3 [mariadb internal] load metadata for docker.io/library/mariadb:10.5 +#3 DONE 1.0s + +#11 [mariadb internal] load .dockerignore +#11 transferring context: 2B done +#11 DONE 0.0s + +#12 [mariadb] exporting to image +#12 exporting layers done +#12 exporting manifest sha256:67ef4d7011fcf8bda1b124dc9f2017e9cd24ffc75c81a44f5ee8dfc4f5e97272 done +#12 exporting config sha256:812d99d7ea8dc6b118c8a744483eab5b3e5fbb0380aed0f65ba822532f413754 done +#12 exporting attestation manifest sha256:0b5426886d81a60ddf543fb55b3c7007c9a127d2f4322cb2fb92518f2517529e done +#12 exporting manifest list sha256:4885a79a2416052a698a924d667c301d0fda6430e0743a452fb21b49626c5253 done +#12 naming to git.nixc.us/nixius/template:staging-mariadb done +#12 unpacking to git.nixc.us/nixius/template:staging-mariadb +#12 ... + +#13 [mariadb 1/1] FROM docker.io/library/mariadb:10.5@sha256:c8bb76c7d0fd384a8a9f230c42a879be8e1052783c8007caa1320a630273b425 +#13 resolve docker.io/library/mariadb:10.5@sha256:c8bb76c7d0fd384a8a9f230c42a879be8e1052783c8007caa1320a630273b425 done +#13 sha256:2cee1b6df15e88df102c5a223517324a6528295d0fb6e19c5161825fe763f69e 6.92MB / 6.92MB 1.4s done +#13 sha256:ecd83b6c354452b6a9979c7666bba16927f1e60e2afbfe6401dd6f87d5db8576 25.98MB / 25.98MB 5.2s done +#13 sha256:e3cdbb02b6a886f3813579a158ede3a5b1edd7dcb1c52e6c59743f657f948034 334B / 334B 0.3s done +#13 sha256:8f6b9b5adf18f48eb3699fa43002dfad0723983c62b66e3698060d0c1da2bcd8 4.02kB / 4.02kB 0.2s done +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 32.51MB / 85.28MB 5.6s +#13 sha256:8d4f5f48dd26314ce01174c43bd9ae56dadc8839986fd1138b3e083a1d3a3312 116B / 116B 0.1s done +#13 sha256:6cf7fc23f330d664ea3c8441ee3d59eb9027dca82959097e60df44d7bb1c3190 8.20kB / 8.20kB 0.1s done +#13 sha256:40586c3e1976d254ac7d41b1267009de3ccf1974e5ad3896618b398882e8fce9 1.72kB / 1.72kB 0.1s done +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 37.75MB / 85.28MB 6.0s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 42.99MB / 85.28MB 6.5s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 48.23MB / 85.28MB 6.9s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 53.48MB / 85.28MB 7.4s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 58.72MB / 85.28MB 7.8s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 63.96MB / 85.28MB 8.3s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 69.21MB / 85.28MB 8.7s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 74.45MB / 85.28MB 9.2s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 79.69MB / 85.28MB 9.6s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 85.28MB / 85.28MB 10.1s +#13 sha256:95ffc3e5b4d502bbde11dfaae453c4f0ece489a095d5518eed9a24d70c32d369 85.28MB / 85.28MB 10.1s done +#13 DONE 10.3s + +#12 [mariadb] exporting to image +#12 unpacking to git.nixc.us/nixius/template:staging-mariadb 13.8s done +#12 DONE 13.9s + +#14 [mariadb] resolving provenance for metadata file +#14 DONE 0.0s + mariadb Built template Built Running tests... Running tests... Test results have been saved to ./temp/test_output.log -Test started at Wed Apr 23 10:27:45 EDT 2025 +Test started at Wed Apr 23 10:58:08 EDT 2025 Testing Docker build... #0 building with "desktop-linux" instance using docker driver -#1 [template internal] load build definition from Dockerfile -#1 transferring dockerfile: 279B done +#1 [mariadb internal] load build definition from Dockerfile.staging +#1 transferring dockerfile: 100B done #1 DONE 0.0s -#2 [template internal] load metadata for docker.io/library/alpine:3.18 -#2 DONE 0.2s +#2 [template internal] load build definition from Dockerfile.staging +#2 transferring dockerfile: 287B done +#2 DONE 0.0s -#3 [template internal] load .dockerignore -#3 transferring context: 2B done -#3 DONE 0.0s +#3 [template internal] load metadata for docker.io/library/alpine:3.18 +#3 ... -#4 [template 1/3] FROM docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f -#4 resolve docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f done -#4 DONE 0.0s +#4 [mariadb internal] load metadata for docker.io/library/mariadb:10.5 +#4 DONE 0.3s -#5 [template 2/3] RUN mkdir -p /scratch /temp -#5 CACHED +#5 [mariadb internal] load .dockerignore +#5 transferring context: 2B done +#5 DONE 0.0s -#6 [template 3/3] WORKDIR /scratch +#6 [mariadb 1/1] FROM docker.io/library/mariadb:10.5@sha256:c8bb76c7d0fd384a8a9f230c42a879be8e1052783c8007caa1320a630273b425 +#6 resolve docker.io/library/mariadb:10.5@sha256:c8bb76c7d0fd384a8a9f230c42a879be8e1052783c8007caa1320a630273b425 done #6 CACHED -#7 [template] exporting to image +#7 [mariadb] exporting to image #7 exporting layers done -#7 exporting manifest sha256:15b202f67217697a010a43b0d8ef636c8bd4a00a7258dc8334ce1220aa5ad10d done -#7 exporting config sha256:e4f5b35710a25e9116a133bde6255ccc3f91a39c9b99e4f4a44d7eaf27024e7d done -#7 exporting attestation manifest sha256:ec2582c7e07cfeaaeb69797430b3d687550c642903473dbe1fbcdea58fefc2cb 0.0s done -#7 exporting manifest list sha256:1f3404b565e38ec1490f2d56d612438b611b2fd31e213e39e37c8e3e80c4b3ff done -#7 naming to docker.io/library/template:test done -#7 unpacking to docker.io/library/template:test done -#7 DONE 0.0s +#7 exporting manifest sha256:67ef4d7011fcf8bda1b124dc9f2017e9cd24ffc75c81a44f5ee8dfc4f5e97272 done +#7 exporting config sha256:812d99d7ea8dc6b118c8a744483eab5b3e5fbb0380aed0f65ba822532f413754 done +#7 exporting attestation manifest sha256:7aca870e0ff4f86c1fa6d851de62930967f801fb0ab78b125b90b881a1902d77 0.0s done +#7 exporting manifest list sha256:d4ed6fde413437ace9621431c6eb2a01a2e697f76f9eb75bfd8867d854ed0329 done +#7 naming to git.nixc.us/nixius/template:staging-mariadb done +#7 unpacking to git.nixc.us/nixius/template:staging-mariadb done +#7 DONE 0.1s -#8 [template] resolving provenance for metadata file +#8 [mariadb] resolving provenance for metadata file #8 DONE 0.0s + +#3 [template internal] load metadata for docker.io/library/alpine:3.18 +#3 DONE 0.5s + +#9 [template internal] load .dockerignore +#9 transferring context: 2B done +#9 DONE 0.0s + +#10 [template 1/3] FROM docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f +#10 resolve docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f 0.0s done +#10 DONE 0.0s + +#11 [template 2/3] RUN mkdir -p /scratch /temp +#11 CACHED + +#12 [template 3/3] WORKDIR /scratch +#12 CACHED + +#13 [template] exporting to image +#13 exporting layers done +#13 exporting manifest sha256:df84d578a4eccddc7f7d15d3c610d35803bd529ce0f90f1eb1099bbf982d9341 done +#13 exporting config sha256:c48b4c75f46025fb4e6a7ba120f44c3a0f8bb216a3724a138aacaac8bdb20d79 done +#13 exporting attestation manifest sha256:9019fbf8cbfc0b2044e242e9ec9dbdb71d7cc56fcaf67b83f0f5f52f9004db31 done +#13 exporting manifest list sha256:cae7893861af71be867d14ed053aaa6dab448b864649480d90264a3522d580bd done +#13 naming to docker.io/library/template:test done +#13 unpacking to docker.io/library/template:test done +#13 DONE 0.0s + +#14 [template] resolving provenance for metadata file +#14 DONE 0.0s + mariadb Built template Built Testing container startup... - Network template_default Creating - Network template_default Created - Container template-template-1 Recreate - Container template-template-1 Recreated - Container template-template-1 Starting - Container template-template-1 Started + Network easy-appointments_default Creating + Network easy-appointments_default Created + Container easy-appointments-mariadb-1 Creating + Container easy-appointments-template-1 Creating + Container easy-appointments-template-1 Created + Container easy-appointments-mariadb-1 Created + Container easy-appointments-mariadb-1 Starting + Container easy-appointments-template-1 Starting + Container easy-appointments-mariadb-1 Started + Container easy-appointments-template-1 Started Container status: -NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +easy-appointments-template-1 template:test "tail -f /dev/null" template 6 seconds ago Up 5 seconds Cleaning up... - Container template-template-1 Stopping - Container template-template-1 Stopped - Container template-template-1 Removing - Container template-template-1 Removed - Network template_default Removing - Network template_default Removed -Tests completed at Wed Apr 23 10:27:52 EDT 2025 + Container easy-appointments-template-1 Stopping + Container easy-appointments-mariadb-1 Stopping + Container easy-appointments-mariadb-1 Stopped + Container easy-appointments-mariadb-1 Removing + Container easy-appointments-mariadb-1 Removed + Container easy-appointments-template-1 Stopped + Container easy-appointments-template-1 Removing + Container easy-appointments-template-1 Removed + Network easy-appointments_default Removing + Network easy-appointments_default Removed +Tests completed at Wed Apr 23 10:58:27 EDT 2025 Starting services... - Container template-template-1 Creating - Container template-template-1 Created - Container template-template-1 Starting - Container template-template-1 Started -Build and run completed at Wed Apr 23 10:27:53 EDT 2025 + Network easy-appointments_dev_network Creating + Network easy-appointments_dev_network Created + Volume "easy-appointments_mariadb_data" Creating + Volume "easy-appointments_mariadb_data" Created + Container easy-appointments-template-1 Creating + Container easy-appointments-mariadb-1 Creating + Container easy-appointments-template-1 Created + Container easy-appointments-mariadb-1 Created + Container easy-appointments-template-1 Starting + Container easy-appointments-mariadb-1 Starting + Container easy-appointments-mariadb-1 Started + Container easy-appointments-template-1 Started +Build and run completed at Wed Apr 23 10:58:31 EDT 2025 diff --git a/temp/test_output.log b/temp/test_output.log index 0c6ed85..29e0663 100644 --- a/temp/test_output.log +++ b/temp/test_output.log @@ -1,55 +1,96 @@ -Test started at Wed Apr 23 10:27:45 EDT 2025 +Test started at Wed Apr 23 10:58:08 EDT 2025 Testing Docker build... #0 building with "desktop-linux" instance using docker driver -#1 [template internal] load build definition from Dockerfile -#1 transferring dockerfile: 279B done +#1 [mariadb internal] load build definition from Dockerfile.staging +#1 transferring dockerfile: 100B done #1 DONE 0.0s -#2 [template internal] load metadata for docker.io/library/alpine:3.18 -#2 DONE 0.2s +#2 [template internal] load build definition from Dockerfile.staging +#2 transferring dockerfile: 287B done +#2 DONE 0.0s -#3 [template internal] load .dockerignore -#3 transferring context: 2B done -#3 DONE 0.0s +#3 [template internal] load metadata for docker.io/library/alpine:3.18 +#3 ... -#4 [template 1/3] FROM docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f -#4 resolve docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f done -#4 DONE 0.0s +#4 [mariadb internal] load metadata for docker.io/library/mariadb:10.5 +#4 DONE 0.3s -#5 [template 2/3] RUN mkdir -p /scratch /temp -#5 CACHED +#5 [mariadb internal] load .dockerignore +#5 transferring context: 2B done +#5 DONE 0.0s -#6 [template 3/3] WORKDIR /scratch +#6 [mariadb 1/1] FROM docker.io/library/mariadb:10.5@sha256:c8bb76c7d0fd384a8a9f230c42a879be8e1052783c8007caa1320a630273b425 +#6 resolve docker.io/library/mariadb:10.5@sha256:c8bb76c7d0fd384a8a9f230c42a879be8e1052783c8007caa1320a630273b425 done #6 CACHED -#7 [template] exporting to image +#7 [mariadb] exporting to image #7 exporting layers done -#7 exporting manifest sha256:15b202f67217697a010a43b0d8ef636c8bd4a00a7258dc8334ce1220aa5ad10d done -#7 exporting config sha256:e4f5b35710a25e9116a133bde6255ccc3f91a39c9b99e4f4a44d7eaf27024e7d done -#7 exporting attestation manifest sha256:ec2582c7e07cfeaaeb69797430b3d687550c642903473dbe1fbcdea58fefc2cb 0.0s done -#7 exporting manifest list sha256:1f3404b565e38ec1490f2d56d612438b611b2fd31e213e39e37c8e3e80c4b3ff done -#7 naming to docker.io/library/template:test done -#7 unpacking to docker.io/library/template:test done -#7 DONE 0.0s +#7 exporting manifest sha256:67ef4d7011fcf8bda1b124dc9f2017e9cd24ffc75c81a44f5ee8dfc4f5e97272 done +#7 exporting config sha256:812d99d7ea8dc6b118c8a744483eab5b3e5fbb0380aed0f65ba822532f413754 done +#7 exporting attestation manifest sha256:7aca870e0ff4f86c1fa6d851de62930967f801fb0ab78b125b90b881a1902d77 0.0s done +#7 exporting manifest list sha256:d4ed6fde413437ace9621431c6eb2a01a2e697f76f9eb75bfd8867d854ed0329 done +#7 naming to git.nixc.us/nixius/template:staging-mariadb done +#7 unpacking to git.nixc.us/nixius/template:staging-mariadb done +#7 DONE 0.1s -#8 [template] resolving provenance for metadata file +#8 [mariadb] resolving provenance for metadata file #8 DONE 0.0s + +#3 [template internal] load metadata for docker.io/library/alpine:3.18 +#3 DONE 0.5s + +#9 [template internal] load .dockerignore +#9 transferring context: 2B done +#9 DONE 0.0s + +#10 [template 1/3] FROM docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f +#10 resolve docker.io/library/alpine:3.18@sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f 0.0s done +#10 DONE 0.0s + +#11 [template 2/3] RUN mkdir -p /scratch /temp +#11 CACHED + +#12 [template 3/3] WORKDIR /scratch +#12 CACHED + +#13 [template] exporting to image +#13 exporting layers done +#13 exporting manifest sha256:df84d578a4eccddc7f7d15d3c610d35803bd529ce0f90f1eb1099bbf982d9341 done +#13 exporting config sha256:c48b4c75f46025fb4e6a7ba120f44c3a0f8bb216a3724a138aacaac8bdb20d79 done +#13 exporting attestation manifest sha256:9019fbf8cbfc0b2044e242e9ec9dbdb71d7cc56fcaf67b83f0f5f52f9004db31 done +#13 exporting manifest list sha256:cae7893861af71be867d14ed053aaa6dab448b864649480d90264a3522d580bd done +#13 naming to docker.io/library/template:test done +#13 unpacking to docker.io/library/template:test done +#13 DONE 0.0s + +#14 [template] resolving provenance for metadata file +#14 DONE 0.0s + mariadb Built template Built Testing container startup... - Network template_default Creating - Network template_default Created - Container template-template-1 Recreate - Container template-template-1 Recreated - Container template-template-1 Starting - Container template-template-1 Started + Network easy-appointments_default Creating + Network easy-appointments_default Created + Container easy-appointments-mariadb-1 Creating + Container easy-appointments-template-1 Creating + Container easy-appointments-template-1 Created + Container easy-appointments-mariadb-1 Created + Container easy-appointments-mariadb-1 Starting + Container easy-appointments-template-1 Starting + Container easy-appointments-mariadb-1 Started + Container easy-appointments-template-1 Started Container status: -NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS +easy-appointments-template-1 template:test "tail -f /dev/null" template 6 seconds ago Up 5 seconds Cleaning up... - Container template-template-1 Stopping - Container template-template-1 Stopped - Container template-template-1 Removing - Container template-template-1 Removed - Network template_default Removing - Network template_default Removed -Tests completed at Wed Apr 23 10:27:52 EDT 2025 + Container easy-appointments-template-1 Stopping + Container easy-appointments-mariadb-1 Stopping + Container easy-appointments-mariadb-1 Stopped + Container easy-appointments-mariadb-1 Removing + Container easy-appointments-mariadb-1 Removed + Container easy-appointments-template-1 Stopped + Container easy-appointments-template-1 Removing + Container easy-appointments-template-1 Removed + Network easy-appointments_default Removing + Network easy-appointments_default Removed +Tests completed at Wed Apr 23 10:58:27 EDT 2025