2.5 KiB
2.5 KiB
Docker build & deploy for studio-panel
This file explains how to build the studio-panel Docker image locally and produce a deployable artifact.
Prerequisites
- Docker installed and running on the host.
- Node.js and npm (for local build path if you prefer building before docker). If you use Docker multi-stage, Node is not needed locally.
Quick build steps (preferred: multi-stage Docker build)
From repo root or inside packages/studio-panel:
# from repo root
cd packages/studio-panel
# build docker (multi-stage uses npm inside builder stage)
docker build -t avanzacast/studio-panel:latest .
# run locally to test
docker run --rm -it -p 3020:80 avanzacast/studio-panel:latest
# now test with curl
curl -I http://localhost:3020/
Notes
- The Dockerfile is multi-stage: the builder stage runs
npm ciandnpm run buildinside the container. The builtdist/is copied to nginx in the final image. - The Dockerfile copies the entire monorepo into the builder context to allow
file:../avanza-uidependency to be resolved during container build.
If the build fails inside Docker due to strict network or registry errors, you can build locally first and then use a simpler Dockerfile that only copies the dist/ folder into the nginx image:
Local-build alternative:
# build locally
cd packages/studio-panel
npm ci
npm run build
# create a simple nginx image
cd packages/studio-panel
cat > Dockerfile.simple <<'EOF'
FROM nginx:stable-alpine
COPY dist /usr/share/nginx/html
COPY deploy/nginx.avanzacast.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
EOF
docker build -f Dockerfile.simple -t avanzacast/studio-panel:local .
If you want the tarball artifact to deploy on the server, run:
# after successful build and image creation
IMAGE=avanzacast/studio-panel:latest
docker save $IMAGE -o /tmp/studio-panel-image-$(date +%s).tar
# scp that tar to the server and on server run:
# docker load -i studio-panel-image-<ts>.tar
# docker run -d --name studio-panel -p 80:80 avanzacast/studio-panel:latest
Troubleshooting
- If the multi-stage build cannot resolve
file:../avanza-ui, ensure the entire repository is in the build context (we copy..into the builder in the current Dockerfile). If your Docker setup restricts context size, prefer local build +Dockerfile.simple. - Inspect build logs with:
docker build --progress=plain -t avanzacast/studio-panel:local .docker logs <container>for runtime errors.