sudo mkdir -p /app/filebrowser && \
sudo touch /app/filebrowser/database.db && \
sudo bash -c 'cat <<EOT > /app/filebrowser/config.json
{
"port": 80,
"noAuth": false,
"baseURL": "",
"address": "",
"database": "/etc/database.db",
"plugin": "",
"scope": "/FILES",
"allowCommands": true,
"allowEdit": true,
"allowNew": true,
"commands": []
}
EOT'
sudo mkdir -p /app/images/filebrowser && cd /app/images/filebrowser && \
sudo git clone https://github.com/filebrowser/filebrowser && \
sudo git clone https://github.com/filebrowser/frontend
sudo cp -rf /app/filebrowser/config.json /app/images/filebrowser/filebrowser/Docker.json && \
sudo mv /app/images/filebrowser/filebrowser/Dockerfile /app/images/filebrowser/Dockerfile && \
sudo bash -c 'cat /dev/null > /app/images/filebrowser/Dockerfile' && \
sudo nano /app/images/filebrowser/Dockerfile
FROM golang:alpine
ARG DPURL=https://api.github.com/repos/golang/dep/releases/latest
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
&& sed -i -e 's/v[0-9]\.[0-9]/edge/g' /etc/apk/repositories \
&& apk add -U --no-cache yarn git curl
COPY ./filebrowser /go/src/github.com/filebrowser/filebrowser
COPY ./frontend /go/src/github.com/filebrowser/frontend
WORKDIR /go/src/github.com/filebrowser/frontend
RUN yarn install; yarn build; exit 0
WORKDIR /go/src/github.com/filebrowser/filebrowser
RUN go get github.com/GeertJohan/go.rice/rice \
&& mkdir -p node_modules/filebrowser-frontend \
&& cp -rf /go/src/github.com/filebrowser/frontend/dist node_modules/filebrowser-frontend \
&& rice embed-go
RUN curl -fsSL "$(curl -s "${DPURL}" \
| grep -i 'browser_download_url.*linux-amd64"' \
| cut -d '"' -f 4)" -o /usr/local/bin/dep \
&& chmod +x /usr/local/bin/dep
RUN dep ensure -vendor-only
WORKDIR /go/src/github.com/filebrowser/filebrowser/cmd/filebrowser
RUN CGO_ENABLED=0 go build -a
RUN mv filebrowser /go/bin/filebrowser
FROM scratch
COPY --from=0 /go/bin/filebrowser /filebrowser
COPY --from=0 /go/src/github.com/filebrowser/filebrowser/Docker.json /config.json
VOLUME /tmp
VOLUME /srv
EXPOSE 80
ENTRYPOINT ["/filebrowser", "--config", "/config.json"]
sudo bash -c 'cat <<EOT > /app/compose/filebrowser.yml
version: "3"
services:
filebrowser:
build: /app/images/filebrowser
image: images/filebrowser:scratch
container_name: "filebrowser"
ports:
- "9001:80"
volumes:
- "/:/FILES"
- "/app/filebrowser/config.json:/config.json"
- "/app/filebrowser/database.db:/etc/database.db"
environment:
USER_ID: 1000
GROUP_ID: 1000
network_mode: bridge
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "5"
restart: "no"
EOT' && \
docker-compose -f /app/compose/filebrowser.yml config
docker-compose -p filebrowser -f /app/compose/filebrowser.yml up -d