GROCYをdockerのimageファイルで動かすために試行錯誤した話


# ゴール

無料＆オープンソースで食料の在庫から家事分担まで家庭のことがすべて管理できる本格的なERPシステム「grocy」を起動させること
https://gigazine.net/news/20200328-grocy/

# 制約条件
・手元にあるのはwindowsPC(エディション Windows 10 Home)
・webサーバー編のDockerを用いた方法で動作させること

# 検証した方法
1.windowsにDockerを入れる方法 ★失敗
2.EC2でLinuxインスタンスを立てて入れる方法 ★失敗
3.EC2でubuntuインスタンスを立てて入れる方法 ★失敗
4.rasberryPIでOSがLINUXのサーバを立てて入れる方法 ★成功

# 1.windowsにDockerを入れる方法

dockerとdocker-composeを入れる
![win_docker2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/a843960d-8ad2-d1bd-9517-2d3d7250ca8e.jpeg)

docker-compose pullでこける
![win__error2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/3cf55d1a-cb09-ab9b-df64-3e5f5ffa7644.jpeg)

->どうやらimageファイルのホストOSがLINUXを想定しているため動かない

<docker for windowsについて>
そもそもHyper-Xの機能が搭載していないと動かない様子
エディションがwindows 10 Homeのパソコンでは載せられなかった模様

windows 10 Homeで機能を再現するならdocker Toolboxがある様子
ただしこれは終了している(?)ようでdocker公式のHPからexeファイルを取得することはできなかった。

# 2.EC2でLinuxインスタンスを立てて入れる方法
Amazon Linux AMI 2018.03.0 のインスタンスをたてて、動かそうとした。デスクトップの画面が表示できなかったため断念(当初は必要と思っていた。よくよく考えればterminalから接続できて、IPさえ取得できれば要らなかった)

![ec2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/8cb2ac40-14ea-9b48-cc99-cfd71ccc3ec9.jpeg)

# 3.EC2でubuntuインスタンスを立てて入れる方法
それならばと
Ubuntu Server 18.04LTSのインスタンスを立てた。
以下サイトを参考にしてデスクトップのログイン環境を整えた。
リモートにはxrdpのパッケージを利用した。

https://qiita.com/osugizmo/items/21578272ae2db05ab001

▼インスタンス起動画面
![ec2_move.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/e292f831-8313-2353-18da-3daf59b5fff6.jpeg)

▼リモートでログインしたときの画面
![ec2_remote.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/a457f371-1af5-f39c-ad3c-46ca2ac22209.jpeg)

当初無料枠のt2.microを利用していたが、デスクトップが重くほぼ動かなかったのでt2.largeに変更。メモリが8GBくらいになる。
料金的にも消し忘れなければ、0.0928USD/時間くらいで済みそうとの判断。

▼EC2料金表
https://aws.amazon.com/jp/ec2/pricing/on-demand/

接続にはwindows terminalを使用

▼windwos terminalのインストール方法
https://qiita.com/rubytomato@github/items/e88cab84f36e44797cf2

接続には以下コマンドを利用する

```
ssh -i {pemファイルパス} ubuntu@{IP}
```

またしてもdocker-compose pullでこける

▼エラー内容
![ubuntu_error2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/eba01068-1b38-e43b-5596-558591b14796.jpeg)

エラーの検証には以下コマンドが便利
systemctl status docker
docker ps

普通に権限不足だった。以下で解決
https://qiita.com/ashidaka/items/734856443f922ff175b1

docker-compose up -dを実行
docker-compose psでコンテナが動いていることを確認

▼動作している様子
![docker up2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/5c8d0da4-6db4-9086-0000-1d02183a03c6.jpeg)

ここでまたしても問題発生。IP指定してもGROCYの画面がでてこない。
AWSが複雑にしている様子。
IPの指定かセキュリティグループとか色々弄らないとだめなのかしら...

4.rasberryPIでOSがLINUXのサーバを立てて入れる方法
最終手段としてrasberryPIを使ってLINUXでサーバーを立ち上げることに

幸いパーツは手元にあったのでつないでmicoSDにLINUXの必要なファイルをコピーして起動

▼繋いでいる様子
![ras.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/6daa9af7-0903-1650-afa5-fb3f88366429.jpeg)

初期環境設定として以下を対応

・インストール
https://pen08.com/raspberry_pi_os_install

・環境の最新化
https://yukaobu.wordpress.com/2017/05/01/raspi-update/

・日本語化
https://www.ratocsystems.com/products/triple_r/blog/?x=entry:entry180330-152029

・rootユーザーの設定(パスワード設定)
http://masatolan.com/raspberry-pi/raspberry-pi-security/

▼初期設定完了後の画面
![raspi_screen.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/7e71f3f9-adfe-c677-0d91-bb75e99a7c39.jpeg)

続いてdockerとdocker-compose、gitをインストール。
権限付与も忘れずに実行。

・docker、docker-composeのインストール手順
https://qiita.com/hawk777/items/467ea47377e69089de5b

・gitのインストール手順
https://www.webprofessional.jp/setting-up-your-raspberry-pi-as-a-git-server/

最後の関門はこれ
![ubuntu_error2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/c8c3b41d-3757-83f1-d36a-9b28e71bc761.jpeg)

exec format error がでてdocker-compose up が正常に終了しない

どうやらこの時点ではイメージの作成が完了していないため、一度ビルドする必要があるらしい。

docker-compose.ymlのファイルがあるフォルダで以下コマンドを実行する。

docker-compose build

▼grocy-dockerのフォルダ構成
![docker_yml.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/0ba0a49e-2d37-6eda-ce16-e447f6f51f47.png)

動いた...!!

![finish.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/ffbefb54-d370-98ea-5206-061fa6fd9855.jpeg)


ちなみに参考までにRasberryPIのLINUXのアーキテクチャーはARMを使っているらしい。
DockerHubからイメージを取得してrunするときはarm対応のものでないとまたexec format errorに遭遇することになる....

https://withblue.ink/2019/07/13/yes-you-can-run-docker-on-raspbian.html

https://github.com/certbot-docker/certbot-docker/issues/1