selfapi-v2 / Dockerfile
akashyadav758
Remove Flow agent from stack (extension, server, gateway, monitor tab)
23a7459
Raw
History Blame Contribute Delete
2.78 kB
# Build the navigator monitor server (GPT / Gemini live view) from source.
FROM golang:1.22-bookworm AS monitor-build
WORKDIR /src
COPY monitor/ ./
RUN go mod tidy && CGO_ENABLED=0 go build -ldflags="-s -w" -o /monitor .
# Build the profile-sync tool that snapshots the Chrome profile to Postgres (Neon).
FROM golang:1.22-bookworm AS profilesync-build
WORKDIR /src
COPY profilesync/ ./
RUN go mod tidy && CGO_ENABLED=0 go build -ldflags="-s -w" -o /profilesync .
# Build the ChatGPT API server (talks to gpt-extension on 127.0.0.1:9225).
FROM golang:1.26-bookworm AS chatgpt-build
WORKDIR /src
COPY free-Chatgpt-api/ ./
RUN go mod download && CGO_ENABLED=0 go build -ldflags="-s -w" -o /agent .
# Build the Gemini API server (talks to gemini-extension on 127.0.0.1:9226).
FROM golang:1.26-bookworm AS gemini-build
WORKDIR /src
COPY free-gemini-api/ ./
RUN go mod download && CGO_ENABLED=0 go build -ldflags="-s -w" -o /free-gemini-api .
FROM akashyadav758/chrome:latest
USER root
# Copy extensions into the container
COPY free-Chatgpt-api/gpt-extension /opt/gpt-extension
COPY free-gemini-api/gemini-extension /opt/gemini-extension
# 3-tab monitor binary (replaces the single-view base monitor)
COPY --from=monitor-build /monitor /opt/monitor3/monitor
# Profile-sync binary (Chrome profile <-> Postgres snapshot)
COPY --from=profilesync-build /profilesync /opt/profilesync/profilesync
# Backend API servers (run on localhost; the monitor gateway fronts them).
COPY --from=chatgpt-build /agent /opt/chatgpt/agent
COPY free-Chatgpt-api/config.json /opt/chatgpt/config.json
COPY --from=gemini-build /free-gemini-api /opt/gemini-srv/free-gemini-api
# Install Chrome for Testing (unbranded). Branded google-chrome-stable (>=128)
# silently ignores --load-extension, so unpacked extensions never load. CfT is the
# unbranded build of the same Chrome version where --load-extension still works.
ARG CFT_URL=https://storage.googleapis.com/chrome-for-testing-public/145.0.7632.117/linux64/chrome-linux64.zip
RUN apt-get update && apt-get install -y --no-install-recommends unzip && \
curl -fsSL "$CFT_URL" -o /tmp/cft.zip && \
unzip -q /tmp/cft.zip -d /opt && \
rm -f /tmp/cft.zip && \
apt-get purge -y unzip && apt-get autoremove -y && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Set correct permissions and ownership
RUN chown -R 1000:1000 /opt/gpt-extension /opt/gemini-extension /opt/chrome-linux64 /opt/monitor3 /opt/profilesync /opt/chatgpt /opt/gemini-srv && \
chmod -R 755 /opt/gpt-extension /opt/gemini-extension /opt/chrome-linux64 /opt/monitor3 /opt/profilesync /opt/chatgpt /opt/gemini-srv
# Replace the start script with the non-root version
COPY --chmod=755 start_hf.sh /start.sh
# Run as non-root user 1000
USER 1000
CMD ["/start.sh"]