├── .dockerignore
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── dip.yml
├── docker-compose.yml
└── init.sh
/.dockerignore:
--------------------------------------------------------------------------------
1 | .narou
2 | .narousetting
3 | 小説データ
4 | trace_dump.txt
5 | mail_setting.yaml
6 | .sass-cache
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .narou
2 | .narousetting
3 | 小説データ
4 | trace_dump.txt
5 | mail_setting.yaml
6 | .sass-cache
7 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ruby:2.7.0-alpine
2 |
3 | LABEL maintainer "whiteleaf <2nd.leaf@gmail.com>"
4 |
5 | ENV NAROU_VERSION 3.5.1
6 | ENV AOZORAEPUB3_VERSION 1.1.0b55Q
7 | ENV AOZORAEPUB3_FILE AozoraEpub3-${AOZORAEPUB3_VERSION}
8 | ENV KINDLEGEN_FILE kindlegen_linux_2.6_i386_v2_9.tar.gz
9 |
10 | WORKDIR /temp
11 |
12 | RUN set -x \
13 | # install AozoraEpub3
14 | && wget https://github.com/kyukyunyorituryo/AozoraEpub3/releases/download/${AOZORAEPUB3_VERSION}/${AOZORAEPUB3_FILE}.zip \
15 | && unzip -q ${AOZORAEPUB3_FILE} \
16 | && mv ${AOZORAEPUB3_FILE} /aozoraepub3 \
17 | # install openjdk11
18 | && apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \
19 | # install kindlegen
20 | && wget http://kindlegen.s3.amazonaws.com/${KINDLEGEN_FILE} \
21 | && tar -xzf ${KINDLEGEN_FILE} \
22 | && mv kindlegen /aozoraepub3 \
23 | # install Narou.rb
24 | && apk --update --no-cache --virtual .build-deps add \
25 | build-base \
26 | make \
27 | gcc \
28 | && gem install narou -v ${NAROU_VERSION} --no-document \
29 | && apk del --purge .build-deps \
30 | # setting AozoraEpub3
31 | && mkdir .narousetting \
32 | && narou init -p /aozoraepub3 -l 1.8 \
33 | && rm -rf /temp
34 |
35 | WORKDIR /novel
36 |
37 | COPY init.sh /usr/local/bin
38 | RUN chmod +x /usr/local/bin/init.sh
39 |
40 | EXPOSE 33000-33001
41 |
42 | ENTRYPOINT ["init.sh"]
43 | CMD ["narou", "web", "-np", "33000"]
44 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2020 whiteleaf.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Narou.rb Docker Image
2 |
3 | Narou.rb を Docker で実行するための Docker Image です。
4 | Docker さえあれば一切環境構築なしで Narou.rb WEB UI を立ち上げることができます。
5 |
6 | Narou.rb 作者製です。
7 | ~~最新バージョンへの追随は本体とほぼ同時に行う予定です。~~
8 | Linux 版の kindlegen の配布が終了してしまったため、現在更新停止中です。
9 |
10 | イメージ内容は下記で構成されます。
11 |
12 | - Alpine Linux
13 | - Ruby 2.7
14 | - [改造版AozoraEpub3](https://github.com/kyukyunyorituryo/AozoraEpub3)
15 | - kindlegen 2.9
16 |
17 | # 使い方(docker コマンド編)
18 |
19 | docker コマンドで直接コンテナを立ち上げます。
20 | コマンドが長いのでエイリアスを切ったりしましょう。
21 | 後述する docker-compose でやったほうが正直楽です。
22 |
23 | コマンドを実行したフォルダが小説管理用のフォルダになるので移動しておきます。
24 |
25 | ```sh
26 | $ mkdir ~/novel && cd $_
27 | $ docker run --rm -it -p 127.0.0.1:33000-33001:33000-33001 -v $(pwd):/novel:cached whiteleaf/narou
28 | ```
29 |
30 | docker から始まるコマンド1行で WEB UI が起動します。
31 | http://localhost:33000/ にアクセスしてください。
32 |
33 | ポートを変える場合、前半部分の 33000-33001 部分を変更するだけでOKです。
34 | 例えば 8000 ポートに変える場合は -p 127.0.0.1:8000-8001:33000-33001 と
35 | 指定してください(websocket 用のポートのために +1 したポートも併記する必要があります)
36 |
37 | # 使い方(docker-compose 編)
38 |
39 | docker-compose のほうが楽なので、こちらを推奨します。
40 | ただし、設定ファイルを1つ用意する必要があります。
41 |
42 | コマンドを実行したフォルダが小説管理用のフォルダになるので移動しておきます。
43 |
44 | ```sh
45 | $ mkdir ~/novel && cd $_
46 | ```
47 |
48 | 下記の内容を docker-compose.yml という名前でを同じフォルダに用意します。
49 |
50 | ```yml
51 | version: "3.7"
52 |
53 | services:
54 | app:
55 | image: whiteleaf/narou
56 | command: ["narou", "web", "-np", "33000"]
57 | volumes:
58 | - .:/novel:cached
59 | tty: true
60 | stdin_open: true
61 | ports:
62 | - "127.0.0.1:33000-33001:33000-33001"
63 | ```
64 |
65 | ファイルを用意したら下記コマンドを打ちます。
66 |
67 | ```sh
68 | $ docker-compose up
69 | ```
70 |
71 | 自動的に WEB UI が起動します。
72 | http://localhost:33000/ にアクセスしてください。
73 |
74 | ポートを変える場合は docker コマンドと同様に ports の項の前半部分を変更してください。
75 | # イメージを更新する
76 |
77 | ```sh
78 | $ docker pull whiteleaf/narou
79 | ```
80 |
81 | 更新がある場合、上記コマンドで環境を最新にできます
82 |
83 | # CUI としてコマンドを使いたい場合
84 |
85 | ## docker で直接使う
86 |
87 | ```sh
88 | $ docker run --rm -it -v $(pwd):/novel:cached whiteleaf/narou narou list
89 | ```
90 |
91 | ## docker-compose で使う
92 |
93 | ```sh
94 | docker-compose run --rm app narou list
95 | ```
96 |
97 | おまけ
98 | [dip](https://github.com/bibendi/dip) を使うと便利です
99 |
100 | dip.yml として下記を用意して、
101 | ```yml
102 | version: "4"
103 | interaction:
104 | narou:
105 | description: Run narou command
106 | service: app
107 | command: narou
108 | ```
109 |
110 | ```sh
111 | $ dip narou list
112 |
113 | # docker-compose up と同じ
114 | $ dip up
115 |
116 | # 下記を実行すると、narou コマンドを透過的に実行出来る様になる
117 | $ eval "$(dip console)"
118 | $ narou list
119 | ```
120 |
--------------------------------------------------------------------------------
/dip.yml:
--------------------------------------------------------------------------------
1 | version: '4'
2 | interaction:
3 | narou:
4 | description: Run narou command
5 | service: app
6 | command: narou
7 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3.7"
2 |
3 | services:
4 | app:
5 | build: .
6 | image: narou
7 | command: ["narou", "web", "-np", "33000"]
8 | volumes:
9 | - .:/novel:cached
10 | tty: true
11 | stdin_open: true
12 | ports:
13 | - "127.0.0.1:33000-33001:33000-33001"
14 |
--------------------------------------------------------------------------------
/init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ ! -e /novel/.narou ]; then
4 | mkdir .narou
5 | mkdir -p .narousetting
6 | {
7 | echo "---";
8 | echo 'aozoraepub3dir: "/aozoraepub3"';
9 | echo 'over18: true';
10 | echo 'server-port: 33000';
11 | echo 'server-bind: 0.0.0.0';
12 | } | tee .narousetting/global_setting.yaml
13 |
14 | {
15 | echo "---";
16 | echo "already-server-boot: true";
17 | } | tee .narousetting/server_setting.yaml
18 |
19 | narou s convert.no-open=true
20 | narou s device=kindle
21 | fi
22 |
23 | exec "$@"
24 |
--------------------------------------------------------------------------------