Add Dockerfile for Coolify deployment and fix image paths.

Serve the static site via nginx on port 80 and use local asset paths so images load outside Open Design.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Dave 2026-08-19 09:37:41 +02:00
parent a50a74873f
commit d635d3554e
4 changed files with 49 additions and 6 deletions

9
.dockerignore Normal file
View file

@ -0,0 +1,9 @@
.git
.file-versions
.od-skills
.playwright-mcp
*.artifact.json
.DS_Store
brand-spec.md
Dockerfile
.dockerignore

14
Dockerfile Normal file
View file

@ -0,0 +1,14 @@
FROM nginx:1.27-alpine
RUN rm -rf /usr/share/nginx/html/*
COPY *.html /usr/share/nginx/html/
COPY *.png /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget -qO- http://127.0.0.1/ || exit 1
CMD ["nginx", "-g", "daemon off;"]

View file

@ -298,7 +298,7 @@
</dl>
</div>
<div class="hero__art">
<img src="/api/projects/716abf22-4c81-4e02-9071-f87cd01d9451/raw/mqcitja8-Gemini_Generated_Image_m7xmdtm7xmdtm7xm.png?workspaceId=un26lqpsncycdhv3rp1d0ywn&amp;workspaceMemberId=pxn6oix13zs6uq64ruak6n1g" alt="MagBeast magnetic drill press — technical schematic, two-view orthographic drawing with 14 labelled parts, dimensioned in millimetres." width="2048" height="2048" loading="eager" decoding="async">
<img src="mqcitja8-Gemini_Generated_Image_m7xmdtm7xmdtm7xm.png" alt="MagBeast magnetic drill press — technical schematic, two-view orthographic drawing with 14 labelled parts, dimensioned in millimetres." width="2048" height="2048" loading="eager" decoding="async">
</div>
</div>
</section>
@ -415,23 +415,23 @@
</div>
<div class="range__grid">
<a href="products.html#drills" class="range__cell reveal" aria-label="MagBeast — magnetic drills">
<div class="range__logo"><img src="/api/projects/716abf22-4c81-4e02-9071-f87cd01d9451/raw/mqcj0lwu-image.png?workspaceId=un26lqpsncycdhv3rp1d0ywn&amp;workspaceMemberId=pxn6oix13zs6uq64ruak6n1g" alt="MagBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__logo"><img src="mqcj0lwu-image.png" alt="MagBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__name">MagBeast<sup>®</sup> · Drills</div>
</a>
<a href="products.html#cordless" class="range__cell reveal" aria-label="MiniBeast — compact cordless">
<div class="range__logo"><img src="/api/projects/716abf22-4c81-4e02-9071-f87cd01d9451/raw/mqcj0qbk-image.png?workspaceId=un26lqpsncycdhv3rp1d0ywn&amp;workspaceMemberId=pxn6oix13zs6uq64ruak6n1g" alt="MiniBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__logo"><img src="mqcj0qbk-image.png" alt="MiniBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__name">MiniBeast<sup>™</sup> · Cordless</div>
</a>
<a href="products.html#cutters" class="range__cell reveal" aria-label="SteelBeast — industrial">
<div class="range__logo"><img src="/api/projects/716abf22-4c81-4e02-9071-f87cd01d9451/raw/mqcj0uhh-image.png?workspaceId=un26lqpsncycdhv3rp1d0ywn&amp;workspaceMemberId=pxn6oix13zs6uq64ruak6n1g" alt="SteelBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__logo"><img src="mqcj0uhh-image.png" alt="SteelBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__name">SteelBeast<sup>®</sup> · Industrial</div>
</a>
<a href="products.html#cutters" class="range__cell reveal" aria-label="Turbo — annular cutters">
<div class="range__logo"><img src="/api/projects/716abf22-4c81-4e02-9071-f87cd01d9451/raw/mqcj14mi-image.png?workspaceId=un26lqpsncycdhv3rp1d0ywn&amp;workspaceMemberId=pxn6oix13zs6uq64ruak6n1g" alt="Turbo" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__logo"><img src="mqcj14mi-image.png" alt="Turbo" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__name">Turbo<sup>™</sup> · Cutters</div>
</a>
<a href="products.html#pneumatic" class="range__cell reveal" aria-label="AirBeast — pneumatic">
<div class="range__logo"><img src="/api/projects/716abf22-4c81-4e02-9071-f87cd01d9451/raw/mqcj189n-image.png?workspaceId=un26lqpsncycdhv3rp1d0ywn&amp;workspaceMemberId=pxn6oix13zs6uq64ruak6n1g" alt="AirBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__logo"><img src="mqcj189n-image.png" alt="AirBeast" width="600" height="200" loading="lazy" decoding="async"></div>
<div class="range__name">AirBeast<sup>®</sup> · Pneumatic</div>
</a>
</div>

20
nginx.conf Normal file
View file

@ -0,0 +1,20 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ $uri.html =404;
}
location ~* \.(png|jpg|jpeg|gif|ico|svg|webp)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
gzip on;
gzip_vary on;
gzip_min_length 256;
gzip_types text/plain text/css application/javascript text/html image/svg+xml;
}