チーム内で情報共有できるお手軽なツールはないか探していたのだが、Hackmdio / codimdで決めた。
理由は軽快なMarkdownエディタと色々とUMLやフローチャートなどの図形が使える事。
ただ画像を、クリップボードから貼り付けられるのはよいが、自動的にimgurに登録されてしまうので仕事で使うには差し障りがある。
その回避方法も解説しています。
この記事では以下のことについて解説しています。
ココがポイント
- DockerをつかったHackmdio / codimdのインストール
- Hackmdio / codimdを会社で使うときに見直すべきパラメータ
目次【本記事の内容】
- 1.DockerをつかったHackmdio / codimdのインストール
- 1-1.なぜDockerでHackmdio / codimdをインストールするのか
- 1-2.Docker+Hackmdio / codimdに必要な環境
- 1-3.Hackmdio / codimdをインストールする
- 2.Hackmdio / codimdを会社で使うときに見直すべきパラメータ
- 2-1.Hackmdio / codimd画像ファイルの保存先
- 2-2.Hackmdio / codimdネットワーク設定
- 2-3.Dockerの運用で注意する事
- 2-4.HackMD/CodiMDのちょっと残念なところ
- 3.2019/08/22追記、ポートを専有されて立ち上がらない
- 4.2019/09/05追記、Dockerバージョンアップでポート専有を回避成功
- 5.2019/10/08追記、久しぶりにポートが塞がれる
- 6.2019/10/22追記、パソコン立ち上げ時にDockerの起動に失敗でポートが専有される
1.DockerをつかったHackmdio / codimdのインストール
1-1.なぜDockerでHackmdio / codimdをインストールするのか
簡単だから。単純な理由です。以前頑張ってAWSに構築してみたりしましたが、もう面倒この上ない。
微妙にライブラリのバージョンが合わなくてエラーになったり、最終的には構築できたものの
今後のメンテナンナスを考えたらDockerで自分のPCに入れておくのが一番楽だと思う。
1-2.Docker+Hackmdio / codimdに必要な環境
なんで今さらセットアップしようと思ったかというと、先日あったDockerのバージョンアップで
Docker-compose up しようとしたらエラーになった。このエラーは以外な方法で直ったのだが、
下の方にその解消法を書いている。
driver failed programming external connectivity on endpoint codimd-container_app_1
試行錯誤してDocker Imageを再起動したり削除して再作成してみたり
やってみるが成功せず。Dockerの再インストールから試みることにした。
動作環境
- Windows10 Pro 1809 64bit
- Docker Windows版 Version 2.0.0.2 (30215)
2019/2/15に書いた記事のリライトです。2019/8/11時点の最新版 Version 2.0.1.1(37199)でも動作しました。 - HackMD Docker Image
GitHub - hackmdio/codimd: CodiMD - Realtime collaborative markdown notes on all platforms.
1-3.Hackmdio / codimdをインストールする
Docker for Windows とGitのインストールが必要だが、これは他の人の記事をぐぐって調べてほしい。
まあ、Docker for Windowsはサイトにアクセスしてダウンロードすれば簡単に出来るから調べるほどのこともないだろう。
- Dockerを立ち上げておく。
- Hackmdio / codimdのDocker Imageファイル取得
とりあえず最新版があればいいのでリポジトリの最新版のみ取得。この時点でGitのインストールは終えておくこと。
git clone --depth 1 https://github.com/hackmdio/codimd-container.git
- Gitから落としてきたフォルダにコマンドで移動して以下のコマンドを実行。
私はC:\git\codimd-container にCloneしているのでPowerShellで
cd C:\git\codimd-container
docker-compose up
で無事に起動する。以下のようなメッセージが出ていればOKだ。2019年2月にインストールしたときには以下の赤枠で
囲ったメッセージが出ていたのだが、今回のインストールではメッセージが出なくなっていた。
だからといってLocalに画像保存する事の危険性が無くなったわけではないのでその対策も後述している。
それよりImgerにアップされる方がよっぽど危険だろうと言いたい。 😳
今回のメッセージは以下の通り HTTP Server listening at 0.0.0.0:3000 というメッセージが出てればOKだ
2.Hackmdio / codimdを会社で使うときに見直すべきパラメータ
2-1.Hackmdio / codimd画像ファイルの保存先
画像ファイルをクリップボードからMarkDown文書に貼り付けられるのはよいのだが、それがImgerにアップされてしまうことだ。
会社で仕事に関する情報が載っている画像だったら大騒ぎだ。画像ファイルは安全なところに保存しておきたい。その設定をこれからする。
取得したファイルの中に、
c:\git\codimd-container\docker-compose.yml
というファイルがあるのでテキストエディタで開く。
その中に「environment:」という項目があるので「- CMD_IMAGE_UPLOAD_TYPE=filesystem」と入力。その下に「- CMD_DOMAIN=DESKTOP-4RV8PRV」と入力。
Localドライブに画像を保存するのでそのパスを定義しないといけないのだが、DropBoxのパスを指定することにした。
こうしておけばパソコンのハードディスクが破損したとしてもDropBoxにデータが残っているので安心だ。
また作成した文書も、MarkdDown形式でダウンロードしてDropBoxのbitbucketのcodimdフォルダに定期的に配置している。
Dropboxもファイルの履歴を管理してくれるが、念の為bitbucketへも定期的にアップして保存するようにしている。
DockerからCドライブにアクセス出来るように設定をDockerの設定を変更しておく。
タスクバーにあるDockerのアイコンからSettingsを選択。
今回はCドライブに画像を保存するので CをSharedするにチェックを付けた。これは各自の方針で適宜修正していただきたい。
ここまでできたら以下のコマンドでDockerイメージを作成し直す。そうすると設定が反映されて画像がローカルに保存されるはずだ。
コマンドプロンプトで以下のコマンドを実行
docker-compose create --force-recreate
終わったら
docker-compose up
というわけで画像が保存されたパスを見ると自分のパソコンのコンピュータ名になっている。これで一安心だ。
2-2.Hackmdio / codimdネットワーク設定
せっかく複数メンバーで編集できるツールだし、蓄積した文書はナレッジとして共有したいからアクセスしたい。
ネットで検索するとDockerの設定で共有する方法を記載しているサイトが多いのだが、自分には難しすぎたためHyper-Vの設定で共有することにした。
自分のパソコンのIPアドレス指定で他のパソコンからhttp://111.111.111.111:3000 のようにブラウザからアクセスすると文書に
ログインが画面が表示された。名前解決のできる環境だったらコンピュータ名のままでも問題ないだろう。
2-3.Dockerの運用で注意する事
Portが塞がれる
これは2019年3月の出来事だったか。
会社のPCでいつものようにdocker-compose up で起動したらアップデートが動いたのか1.3.0にバージョンアップしてしまった。
そうすると今まで登録していたアカウントや文書が全部消えてしまったw。バックアップはとっていたので復旧はすぐにできたが。
で2019/8/7の事、Dockerがバージョンアップしたということでどんなふうに変わったか確認しようと思ってインストール。
その後以下のエラーが出て、またHackmdio/codimdが起動できなくなってしまった。
ネットでググるとDockerを再起動すれば直る情報があり実行→直らず。
Dockerイメージを削除して作り直すと起動するという情報があり実行→直らず。
Dockerから再インストールするかと思って再インストールしても直らず。
driver failed programming external connectivity on endpoint codimd-container_app_1
エラーメッセージをよく見るとポートにアクセスできないとかなんとかというエラーメッセージが出ている。
docker-compose.yml のPortの設定で
- port 3001:3000
と書き加えてイメージ再作成
docker-compose create --force-recreate
終わったら
docker-compose up
そしたら無事に起動。http://localhost:3000 でアクセスできた。
もしかしてと思い、もう一回
docker-compose.yml のPortの設定で
- port 3000:3000
に戻してもう一回イメージを作成し直す。
と書き加えてイメージ再作成
docker-compose create --force-recreate
終わったら
docker-compose up
であっさり元の http://localhost:3000 でつながるようになった。
最初からこれだけで良かったのではないかという疑問が残ったが、これは次回の課題にしておこう。
教訓
バックアップはこまめに取っておくべし。
docker-compose up できなくなったらポートを一時的に変えて試すべし。
ChromeのGoogle翻訳はOFFにしておくこと。
編集しているときにどうも編集がうまくできないときがある。
この原因を探っていたら、英語サイトを自動翻訳する設定にしていたのだが、それが原因のようだ。自動翻訳をOFFにしたら挙動が安定した。
課題
会社のPCだが、IP固定ではないのでどうするか?
そう言えば担当しているパッケージの最新バージョンがWindows10だから開発環境をかVM-Wareで作る話があった。そこに乗っけるか。。
2019/4/15追記 VM-Wareの仮想マシンにDockerを更に乗せるのはムリ
いろいろ試行錯誤したのだが、VM-Wareで構築したWindows10 ProにDockerをいれてもエラーになり動作しなかった。
VM-WareのWindows10 でHyper-Vがどうなっているか確認するとローカルのWindows10にはあるMobyLinuxVMが無い。。
ネットを色々検索するとVM-Wareを載せているWindows Server側の設定をいじれば騙せるそうだが、そこまでする権限が私には無いので諦めた。
AWS上に置こうかとも思うが、セキュリティの問題があるしオンプレのサーバーを買ってもらうしか無いが、
そうまでして成果を出せるかコミットできない。なぜなら
なんでうちにはグループウェアのNotesがあるのに、CodiMDをいれないといけないのだ?
に反論するまでのロジックが思い浮かばない。しばらくはローカルのエディタとして我慢するか。
HackMD/CodiMDのちょっと残念なところ
長文だと下の方にスクロールでずれる
5000字ぐらいのメモで編集・プレビュー同時表示の場合、下の方にスクロールして編集しようとすると
何故かちょっと上の方にいって編集箇所が見えなくなってしまうという問題がある。
編集Onlyの画面にすればよいのだけど、ちょっと残念。文章を適当に細分化するなど考慮する必要がある。
全文検索してくれない
タグを検索するとか文書タイトルは検索してくれるのだけど本文の中までは検索してくれない。
私は定期的に文書をDropBoxに保存するようにしているからGrepすればいいんだけど、
最新の内容がDropboxに落ちていない時もあるわけで、文書数が増えてきたからどこに書いたか探すのが大変になってきた。
とりあえずAutoHotKeyを使った自作のGrepツールでMarkdownの文書を保存しているディレクトリを検索対象にしてしのいでいます。
2019/8/22追記、ポートを専有されて立ち上がらない
お盆明けに会社のPCでも以下のポートがふさがっているからつながらないよエラーが発生
今度はDockerのアンインストールはせず、Hackmdio/Codimdのポートを変えてみる。
- port 3001:3000
そうするとブラウザのURLを localhost:3000にして無事にアクセスできた。これが2019/8/19(月)の事。
それで2019/8/21(水)に会社にいってさあ仕事をするかと思ったら、今度はポート3001にアクセスできないというエラーが発生している。
おいおい。と思って- port 3000:3000 に戻してdocker-compose upをやり直したら無事につながったw
それからエラーが発生していないのでどんな条件の時にエラーが発生してしまうのか自分でもわかっていない。たまにメモリが足りなくてDockerが起動しないというエラーになる。
それが原因になってポートを掴んでしまうのか。
また、状況に変化があったら報告したい。
2019/9/05追記、Dockerバージョンアップでポート専有を回避成功
→この修正をしてから9/4までパソコンの電源をつけて、Dockerは問題なく起動。Hackmdio/codimdにポート3000番でアクセスできる状態が続いていた。
ところが今朝、会社についてパソコンを起動したらDockerクライアントの更新のお知らせが来ている。
私の予想ではDockerをバージョンアップする時にHackmdio/codimdを立ち上げっぱなしだと3000番ポートを掴みっぱなしになってアクセスできなくなるのではと予想。
なので今回は焦ってアップデートをせず、まずはHackmdio/codimdを終了する。
docker-compose stop
無事に終了したことを確認してからDockerのアップデートを実行。
そのあとHackmdio/codimdを起動
Docker-compose up
画面最下部にポート番号3000で待受になっていると表示されている。無事に立ち上げることができた。ということでDockerのバージョンアップのときには慌ててバージョンアップしないことだね。
というかこんな事はDocker界では当然なのかもしれませんんが。orz
2019/10/08追記、久しぶりにポートが塞がれる
本日仕事をしていて、パソコンを起動した所Dockerがメモリ不足でエラー。二回ほどやり直してなんとか立ち上がる。
あまり気にせず、昼休み。久しぶりにCodiMDバージョンアップしているみたい。まだ、ベータ版なのか何が変わったのかよくわからない。
とりあえず備忘録に、書いておこうと思ってHackMD/Codimdを起動していたら、挙動が不安定。一度再起動してdocker-compose upしたらポートが付されてしまうエラーが発生。
しかし今回は手強かった。結局ポートを順番に3000番から3006番まで繰り上げたものの立ち上がらない。もう3000番ポートは諦めて3006番ポートを使う設定にして
environment:
- CMD_PORT=3006
ports:
- "3006:3006"
にして正常に稼働。少し驚いたのはバックアップもあるし、思い切ってコンテナ消すかと思い
docker-compose down
を実行してからdocker-compose up -d したらデータが消えてなかった。ログインアカウントが消えていたが、ログインするとノートのデータは無事だった。
でもポート番号が変わったせいで画像のリンクがhttp://xxxxx:3000/yyyyy.png ではられているから全部リンク切れ起こしちゃった。はやりポート3000番に復活させられないか調査する必要がある。3連休はそれで終わりそうだ。
2019/10/22追記、パソコン立ち上げ時にDockerの起動に失敗でポートが専有される
パソコンの起動時にメモリ不足でDockerの起動に失敗した。Dockerを再度起動する。そうしたらCodiMDにアクセスできない。
どうもDockerの起動に失敗するとポートが塞がれるということが分かってきた。
パソコンの起動時にはどうしても色々なアプリやサービスが起動しようとする。それは致し方ない。
そういうわけでDockerのサービス起動を遅延起動にしてみた。PC立ち上げ直後ではなくてしばらくして落ち着いたら立ち上がる設定だ。
これでPC起動時にDockerの起動に失敗するということがなくなるとよいのだが。しばらく様子を見よう。
実際の使い方については以下の記事にまとめました。もしよかったら御覧ください。
-
Hackmdio/codimdを実際に使うときの解説です。
MarkDownの編集ツールであるHackmdio/Codimd 実際に使っているところを動画にまとめました。Visual Studio Codeより立ち上がりは速いし、編集速度も快適だと思います。 ...
続きを見る