Docker Desktop for Windowsを使って、最新のodooを２コマンドで起動させる

# docker/odoo

[odoo](https://www.odoo.com/ja_JP/)をご存じでしょうか。[odoo](https://www.odoo.com/ja_JP/)は、pythonで実装されたオープンソースのERPとして、有名ですが、実は、業務アプリケーションの**ノンコーディングツール（Odoo Studio）**でもあります。

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/1f13f72c-ef4e-0709-a5e2-fd0103af0980.png)
Odoo Studio: Build an App from Scratch with Zero Coding Experience 2019/11/13](https://youtu.be/eogyQ7vaSSQ)

これまで、[odoo](https://www.odoo.com/ja_JP/)を試すのに、Linuxのインストールから始まり、python環境の構築、データベースとなるpostgreSQLの設定やWebサーバーの設定など、いくつかの手順が必要でした。それが、Dockerの登場により、2コマンドで、odooをインストールし、起動することができるようになりました。もちろん、[odooもDocker公式イメージ](https://hub.docker.com/_/odoo)として、登録されています。

## 準備 - Dockerのインストール

ここでは、Windows10で、[Docker Desktop for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows)を使って、最新のodooを2コマンドで起動させます。
まずは、[Docker Desktop for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows)をインストールします。
https://docs.docker.jp/docker-for-windows/toc.html


# dockerでodooを起動

odooは、Docker Hubに公式イメージとして登録されていますので、２つのコマンドで起動が可能です。

## コマンド１ - データベースの起動

まずは、データベースであるPostgreSQLのコンテナをバックグラウンドで実行します。
初回の起動時に、必要なモジュールのインストールが自動的に行われます。

|#|項目|内容|
|---|---|---|
| 1 |コマンド| docker run |
| 2 | コンテナをバックグラウンドで実行 | する (-d) |
| 3 | POSTGRES_USER (-e) | odoo |
| 4 | POSTGRES_PASSWORD (-e) | odoo |
| 5 | POSTGRES_DB (-e) | postgres |
| 6 | コンテナの名前(--name) | db |
| 7 | Dockerイメージ | postgres:10 |

``` doccker.db.cmd
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10
```

## コマンド２ - odooの起動

先に起動したPostgreSQLのコンテナにリンクするようにして、odooのコンテナを起動します。

|#|項目|内容|
|---|---|---|
| 1 | コマンド | docker run|
| 3 | ホスト側に公開するコンテナのポート (-p) | 8069:8069 |
| 4 | コンテナの名前 (--name) | odoo |
| 5 | 他のコンテナへのリンク (--link) | db:db |
| 6 | 疑似ターミナルを割り当て| する (-t) |
| 7 | Dockerイメージ | odoo |

``` docker.odoo.cmd
docker run -p 8069:8069 --name odoo --link db:db -t odoo
```

## 結果

``` コマンドプロンプト.cmd
Microsoft Windows [Version 10.0.18363.959]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\dev>docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10
Unable to find image 'postgres:10' locally
10: Pulling from library/postgres
75cb2ebf3b3c: Pull complete                                                                                             3ca6415d2bca: Pull complete                                                                                             ac08e6372a7b: Pull complete                                                                                             b4394fce95ce: Pull complete                                                                                             6edcd5da08e3: Pull complete                                                                                             3380dcb7db08: Pull complete                                                                                             c7c147d9c90d: Pull complete                                                                                             08ae47fef758: Pull complete                                                                                             3d807fd80688: Pull complete                                                                                             3f37a1ee389c: Pull complete                                                                                             cea1ff8f661e: Pull complete                                                                                             064c69d8ca75: Pull complete                                                                                             96c4055cb7f7: Pull complete                                                                                             4477915a4c1f: Pull complete                                                                                             Digest: sha256:e3a02efdce3ec64cfdb76a8ff93ae14d3294e47a0203d8230c8853a3890fe340
Status: Downloaded newer image for postgres:10
05ae7b08b1800ef560a3b6dca95c4071163b3d1582ffc224d87f2e77a29ab9a9

C:\Users\dev>docker run -p 8069:8069 --name odoo --link db:db -t odoo
Unable to find image 'odoo:latest' locally
latest: Pulling from library/odoo
bf5952930446: Already exists                                                                                            fa677b64d95a: Pull complete                                                                                             2dd4309767ba: Pull complete                                                                                             6ffbc48d26ec: Pull complete                                                                                             d6f4cbbe7cdf: Pull complete                                                                                             338ad56bea8c: Pull complete                                                                                             d6c8b0326958: Pull complete                                                                                             6fd5f5f6c87c: Pull complete                                                                                             24ccac123804: Pull complete                                                                                             Digest: sha256:a0a1f89921d66751b8f94042f4bd291d4761858ef4f4262a0b27de8cf70b74d6
Status: Downloaded newer image for odoo:latest
2020-08-11 03:43:19,685 1 INFO ? odoo: Odoo version 13.0-20200629
2020-08-11 03:43:19,685 1 INFO ? odoo: Using configuration file at /etc/odoo/odoo.conf
2020-08-11 03:43:19,686 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/var/lib/odoo/addons/13.0', '/mnt/extra-addons']
2020-08-11 03:43:19,687 1 INFO ? odoo: database: odoo@172.17.0.2:5432
2020-08-11 03:43:19,935 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf
2020-08-11 03:43:20,096 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on 3dd0bcf7ca1d:8069

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/6c7bd7a6-1666-d98a-33d8-6cab9fcae88d.png)

## ログイン（初回）

次のURLで、odooにログインします。

http://localhost:8069/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252891/0e8c6575-2a6b-754e-82ac-30ea518f7bd4.png)

コマンドプロンプトには、疑似ターミナルとして、次のように標準出力されます。

``` コマンドプロンプト.cmd
2020-08-11 06:12:57,654 1 INFO ? odoo.http: HTTP Configuring static files
2020-08-11 06:12:57,685 1 INFO ? odoo.http: Generating nondb routing
2020-08-11 06:12:57,709 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET / HTTP/1.1" 303 - 1 0.013 0.036
2020-08-11 06:12:57,732 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web HTTP/1.1" 303 - 2 0.005 0.010
2020-08-11 06:12:57,853 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web/database/selector HTTP/1.1" 200 - 2 0.004 0.098
2020-08-11 06:12:57,895 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web/static/lib/fontawesome/css/font-awesome.css HTTP/1.1" 200 - - - -
2020-08-11 06:12:57,896 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web/static/lib/bootstrap/css/bootstrap.css HTTP/1.1" 200 - - - -
2020-08-11 06:12:57,904 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web/static/lib/jquery/jquery.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:57,964 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web/static/lib/popper/popper.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:57,982 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:57] "GET /web/static/lib/bootstrap/js/index.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,005 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/util.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,033 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/alert.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,036 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/button.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,053 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/carousel.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,063 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/collapse.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,091 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/dropdown.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,094 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/tooltip.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,095 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/modal.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,112 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/popover.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,127 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/scrollspy.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,135 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/bootstrap/js/tab.js HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,152 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/src/img/logo2.png HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,360 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/lib/fontawesome/fonts/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1" 200 - - - -
2020-08-11 06:12:58,399 1 INFO ? werkzeug: 172.17.0.1 - - [11/Aug/2020 06:12:58] "GET /web/static/src/img/favicon.ico HTTP/1.1" 200 - - - -
```

# おわりに
Windows 10 上で、Docker Desktop for Windows をインストールし、２つのコマンドで、最新のodooを起動できることを確認しました。
* 準備 - Docker Desktop for Windows のインストール
* コマンド１ - PostgreSQLのコンテナの起動
* コマンド２ - odooのコンテナの起動

odoo は、pythonで実装されたオープンソースのERPでもありますが、Odoo Studioを使って、ノンコーディングの高速開発が可能です。