Extend docker support

This commit is contained in:
Dennis Günnewig 2018-03-10 11:19:16 +01:00
parent 5c7b08d763
commit 286921268d
3 changed files with 105 additions and 44 deletions

9
.dockerignore Normal file
View File

@ -0,0 +1,9 @@
bin/
README.md
Dockerfile
LICENSE
Makefile
README.md
screenshot.png
shiori
shiori.db

View File

@ -1,18 +1,25 @@
FROM golang:1.10.0-alpine3.7 FROM golang:1.10-alpine as builder
WORKDIR /go/src/shiori RUN apk update \
&& apk --no-cache add git build-base
WORKDIR /go/src/github.com/RadhiFadlillah/shiori
COPY . . COPY . .
RUN go get -d -v ./...
RUN go build -o shiori main.go
# Install git and gcc FROM alpine:latest
# Get dependencies
# Install dependencies ENV ENV_SHIORI_DB /srv/shiori.db
# Create shiori.db as a file, so in case that the file
# is mounted with -v, a folder will not be created RUN apk --no-cache add dumb-init ca-certificates
RUN apk --no-cache add git build-base \ COPY --from=builder /go/src/github.com/RadhiFadlillah/shiori/shiori /usr/local/bin/shiori
&& go get -d -v ./... \
&& go install -v ./... \ WORKDIR /srv/
&& touch shiori.db RUN touch shiori.db
EXPOSE 8080 EXPOSE 8080
CMD ["shiori", "serve"] ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["/usr/local/bin/shiori", "serve"]

109
README.md
View File

@ -77,138 +77,183 @@ $ docker build -t shiori .
### Run the container ### Run the container
After building the image you will be able to start a container from it; After building the image you will be able to start a container from it. To
preserve the database you need to bind the file. In this example we're locating
the `shiori.db` file in our CWD.
```bash ```sh
$ docker run -d --name shiori -p 8080:8080 shiori touch shiori.db
docker run --rm --name shiori -p 8080:8080 -v $(pwd)/shiori.db:/srv/shiori.db radhifadlillah/shiori
``` ```
As after running the container there will be no accounts created, you need to run the following commands: If you want to run the container in the background add `-d` after `run`.
```bash ### Console access for container
```sh
# First open a console to the container (as you will need to enter your password) # First open a console to the container (as you will need to enter your password)
# and the default tty does not support hidden inputs # and the default tty does not support hidden inputs
$ docker exec -it shiori /bin/sh docker exec -it shiori sh
/go/src/shiori # shiori account add <your-desired-username> ```
### Initialize shiori with password
As after running the container there will be no accounts created, you need to
open a console within your container and run the following command:
```sh
shiori account add <your-desired-username>
Password: <enter-your-password> Password: <enter-your-password>
``` ```
And you're now ready to go and access shiori via web. And you're now ready to go and access shiori via web.
> For preserving the database, look at the next section. ### Run Shiori docker container as systemd image
### Bind the database 1. Create a service unit for `systemd` at `/etc/systemd/system/shiori.service`.
As you've probably noticed, if you dont preserve the database, all your bookmarks will be lost in case of rebooting/rebuilding the container. ```ini
[Unit]
Description=Shiori container
After=docker.service
To preserve the database you need to bind the file. In this example we're locating the `shiori.db` file in our CWD. [Service]
Restart=always
ExecStartPre=-/usr/bin/docker rm shiori-1
ExecStart=/usr/bin/docker run \
--rm \
--name shiori-1 \
-p 8080:8080 \
-v /srv/machines/shiori/shiori.db:/srv/shiori/shiori.db \
radhifadlillah/shiori
ExecStop=/usr/bin/docker stop -t 2 shiori-1
```bash [Install]
$ docker run -d --name shiori -p 8080:8080 -v $(PWD)/shiori.db:/go/src/shiori/shiori.db shiori WantedBy=multi-user.target
``` ```
>>>>>>> Added Docker usage to README
2. Set up data directory
This assumes, that the Shiori container has a runtime directory to store their
database, which is at `/srv/machines/shiori`. If you want to modify that,
make sure, to fix your `shiori.service` as well.
```sh
install -d /srv/machines/shiori
touch /srv/machines/shiori/shiori.db
```
3. Enable and start the container
```sh
systemctl enable --now shiori
```
## Examples ## Examples
*Hint:* If you want to practice the following commands with the docker container,
[run the image](#run-the-container) and [open a
console](#console-access-for-container). After that go along with the examples.
1. Save new bookmark with tags "nature" and "climate-change". 1. Save new bookmark with tags "nature" and "climate-change".
``` ```sh
shiori add https://grist.org/article/let-it-go-the-arctic-will-never-be-frozen-again/ -t nature,climate-change shiori add https://grist.org/article/let-it-go-the-arctic-will-never-be-frozen-again/ -t nature,climate-change
``` ```
2. Print all saved bookmarks. 2. Print all saved bookmarks.
``` ```sh
shiori print shiori print
``` ```
2. Print bookmarks with index 1 and 2. 2. Print bookmarks with index 1 and 2.
``` ```sh
shiori print 1 2 shiori print 1 2
``` ```
3. Search bookmarks that contains "sqlite" in their title, excerpt, url or content. 3. Search bookmarks that contains "sqlite" in their title, excerpt, url or content.
``` ```sh
shiori search sqlite shiori search sqlite
``` ```
4. Search bookmarks with tag "nature". 4. Search bookmarks with tag "nature".
``` ```sh
shiori search -t nature shiori search -t nature
``` ```
5. Delete all bookmarks. 5. Delete all bookmarks.
``` ```sh
shiori delete shiori delete
``` ```
6. Delete all bookmarks with tag "nature". 6. Delete all bookmarks with tag "nature".
``` ```sh
shiori delete $(shiori search -t nature -i) shiori delete $(shiori search -t nature -i)
``` ```
7. Update all bookmarks' data and content. 7. Update all bookmarks' data and content.
``` ```sh
shiori update shiori update
``` ```
8. Update bookmark in index 1. 8. Update bookmark in index 1.
``` ```sh
shiori update 1 shiori update 1
``` ```
9. Change title and excerpt from bookmark in index 1. 9. Change title and excerpt from bookmark in index 1.
``` ```sh
shiori update 1 -i "New Title" -e "New excerpt" shiori update 1 -i "New Title" -e "New excerpt"
``` ```
10. Add tag "future" and remove tag "climate-change" from bookmark in index 1. 10. Add tag "future" and remove tag "climate-change" from bookmark in index 1.
``` ```sh
shiori update 1 -t future,-climate-change shiori update 1 -t future,-climate-change
``` ```
11. Import bookmarks from HTML Netscape Bookmark file. 11. Import bookmarks from HTML Netscape Bookmark file.
``` ```sh
shiori import exported-from-firefox.html shiori import exported-from-firefox.html
``` ```
12. Export saved bookmarks to HTML Netscape Bookmark file. 12. Export saved bookmarks to HTML Netscape Bookmark file.
``` ```sh
shiori export target.html shiori export target.html
``` ```
13. Open all saved bookmarks in browser. 13. Open all saved bookmarks in browser.
``` ```sh
shiori open shiori open
``` ```
14. Open text cache of bookmark in index 1. 14. Open text cache of bookmark in index 1.
``` ```sh
shiori open 1 -c shiori open 1 -c
``` ```
15. Serve web app in port 9000. 15. Serve web app in port 9000.
``` ```sh
shiori serve -p 9000 shiori serve -p 9000
``` ```
16. Create new account for login to web app. 16. Create new account for login to web app.
``` ```sh
shiori account add username shiori account add username
``` ```