FROM alpine:3.21.3 # Because this image is built for SQLite, we create /home/ory and /home/ory/sqlite which is owned by the ory user # and declare /home/ory/sqlite a volume. # # To get SQLite and Docker Volumes working with this image, mount the volume where SQLite should be written to at: # # /home/ory/sqlite/some-file. RUN addgroup -S ory; \ adduser -S ory -G ory -D -h /home/ory -s /bin/nologin; \ chown -R ory:ory /home/ory RUN apk --no-cache --latest upgrade &&\ apk --no-cache --upgrade --latest add ca-certificates WORKDIR /home/ory COPY keto /usr/bin/keto # By creating the sqlite folder as the ory user, the mounted volume will be owned by ory:ory, which # is required for read/write of SQLite. RUN mkdir -p /var/lib/sqlite RUN chown ory:ory /var/lib/sqlite VOLUME /var/lib/sqlite # Exposing the ory home directory to simplify passing in keto configuration (e.g. if the file $HOME/.keto.yaml # exists, it will be automatically used as the configuration file). VOLUME /home/ory # Declare the standard ports used by keto (4433 for read service endpoint, 4434 for write service endpoint) EXPOSE 4433 4434 USER ory ENTRYPOINT ["keto"] CMD ["serve"]