Files
vm/Dockerfile
zeekay 35022f48d3 deps: bump Go to 1.26.4 across go.mod, Dockerfiles, GH Actions
Workspace-wide sync. luxfi/node already shipped on 1.26.4 in v1.30.6
(commit 121aca1fa9); this is the cross-repo catch-up.
2026-06-07 12:13:04 -07:00

71 lines
2.0 KiB
Docker

FROM guacamole/guacd:1.5.4 as guacd
FROM node:18.19.0 AS FRONT
WORKDIR /web
COPY ./web .
RUN yarn install --frozen-lockfile --network-timeout 1000000 && yarn run build
FROM golang:1.26.4 AS BACK
WORKDIR /go/src/hanzo-visor
COPY . .
# Per SCALE_STANDARD.md §2 — every Go production Dockerfile that
# emits JSON to a client builds with GOEXPERIMENT=jsonv2. Verified
# -12% time / -23% allocs on the edge POST roundtrip vs encoding/json
# v1 (json_bench_test.go in hanzoai/zip).
ARG GO_EXPERIMENT=jsonv2
ENV GOEXPERIMENT=${GO_EXPERIMENT}
RUN chmod +x ./build.sh
RUN ./build.sh
FROM alpine:latest AS STANDARD
LABEL MAINTAINER="https://hanzo.ai/"
ARG USER=hanzo-visor
RUN sed -i 's/https/http/' /etc/apk/repositories
RUN apk add --update sudo
RUN apk add curl
RUN apk add ca-certificates && update-ca-certificates
RUN adduser -D $USER -u 1000 \
&& echo "$USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$USER \
&& chmod 0440 /etc/sudoers.d/$USER \
&& mkdir logs \
&& chown -R $USER:$USER logs
USER 1000
WORKDIR /
COPY --from=BACK --chown=$USER:$USER /go/src/hanzo-visor/visor ./visor
COPY --from=BACK --chown=$USER:$USER /go/src/hanzo-visor/data ./data
COPY --from=BACK --chown=$USER:$USER /go/src/hanzo-visor/conf/app.conf ./conf/app.conf
COPY --from=FRONT --chown=$USER:$USER /web/build ./web/build
ENTRYPOINT ["/visor"]
FROM guacd AS ALLINONE
LABEL MAINTAINER="https://hanzo.ai/"
WORKDIR /
USER root
RUN apt-get update \
&& apt-get install -y \
mariadb-server \
mariadb-client \
ca-certificates \
&& update-ca-certificates \
&& rm -rf /var/lib/apt/lists/*
COPY --from=BACK /go/src/hanzo-visor/visor ./visor
COPY --from=BACK /go/src/hanzo-visor/data ./data
COPY --from=BACK /go/src/hanzo-visor/docker-entrypoint.sh /docker-entrypoint.sh
COPY --from=BACK /go/src/hanzo-visor/conf/app.conf ./conf/app.conf
COPY --from=FRONT /web/build ./web/build
EXPOSE 19000
ENTRYPOINT ["/bin/bash"]
CMD ["/docker-entrypoint.sh"]