Видео ролики
Установка Dokku
Качаем скипт установки:
Copy curl -L https://raw.githubusercontent.com/dokku/dokku/v0.11.2/bootstrap.sh | bash
Установка плагина Postgres
Сайт плагина -
Copy dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
Создаем инстанс постгреса последней версии:
Copy POSTGRES_CUSTOM_ENV="POSTGRES_USER=odoo" dokku postgres:create odoo_db
Обязательно указываем имя для базы, ибо в Odoo вшита проверка на пользователя, и Оду откажется работать с ошибкой:
Using the database user 'postgres' is a security risk, aborting.
Также можно установить другую версию Postgres, а также выключить ssl:
Copy DISABLE_SSL=1 POSTGRES_IMAGE_VERSION="9-alpine" POSTGRES_CUSTOM_ENV="POSTGRES_USER=odoo" dokku postgres:create odoo_db
Получить информацию о базе:
Copy root@mars:~# dokku postgres:info odoo_db
=====> Container Information
Config dir: /var/lib/dokku/services/postgres/odoo_db/config
Data dir: /var/lib/dokku/services/postgres/odoo_db/data
Dsn: postgres://postgres:cb8dc005ece9f88ceeb6e72d37b3fcb4@dokku-postgres-odoo-db:5432/odoo_db
Exposed ports: -
Id: 87a4b10d2dbb68f49789cb61cf6f245c947383031afa3d7fe0bae5de7511529c
Internal ip: 172.17.0.2
Links: odoo_test
Service root: /var/lib/dokku/services/postgres/odoo_db
Status: running
Version: postgres:9.6.4
В переменной Dsn содержится пароль. Так как мы при создании базы указали POSTGRES_USER, этот пароль одновременно для пользователя postgres и odoo. Также в Dsn содержится адрес хоста базы данных.
Создание приложения
Создаем приложение:
dokku apps:create odoo_test
Далее надо прилинковать сервис постгреса к приложению:
Copy dokku postgres:link odoo_db myapp
После этого необходимо сконфигурировать переменные окружения:
Copy dokku config:set odoo_test ODOO_ARG_NO_DATABASE_LIST= ODOO_ARG_WITHOUT_DEMO=all ODOO_ARG_DATABASE=my_app_name ODOO_ARG_DB_HOST=dokku-postgres-odoo-db ODOO_ARG_DB_PASSWORD=cb8dc005ece9f88ceeb6e72d37b3fcb4 ODOO_ARG_WORKERS=4
После этого можно делать деплой приложения, взяв образец отсюда -
Клонирование приложения
Copy dokku apps:clone --skip-deploy init_app mydomain.app.com
Флаг --skip-deploy нужен для того, чтобы переопределить конфигурацию нового приложения.
Copy dokku config:set --no-restart odoo_app ODOO_ARG_DATABASE=comlib_md ODOO_ARG_DB_HOST= ODOO_ARG_DB_PASSWORD=4bee98115d1959d73fba415c7da3c79b ODOO_ARG_WORKERS=4 ODOO_ARG_WITHOUT_DEMO=all ODOO_ARG_NO_DATABASE_LIST=
-----> Setting config vars
ODOO_ARG_DB_PASSWORD: 4bee98115d1959d73fba415c7da3c79b
ODOO_ARG_WORKERS: 4
ODOO_ARG_WITHOUT_DEMO: all
ODOO_ARG_NO_DATABASE_LIST:
ODOO_ARG_DATABASE: comlib_md
root@mars:/tmp#
Изменение CMD
Copy dokku config:set app DOKKU_DOCKERFILE_START_CMD="odoo -u all"
Сборка Odoo с python 2
Odoo версии 8 использует odoo.py вместо odoo, поэтому необходимо переопределить ODOO_CMD:
Copy dokku docker-options:add app build '--build-arg ODOO_CMD=odoo.py'
Добавление параметров сборки или запуска
В папке с приложение можно указать Docker параметры в файлах DOCKER_OPTIONS_RUN (или DOCKER_OPTIONS_BUILD или DOCKER_OPTIONS_DEPLOY), например:
Copy --link container_name:alias
-v /host/path:/container/path
-v /another/container/path
Либо сделать тоже самое через dokku docker-options, например:
Copy # Mount a host volume in a Docker container: "-v /host/path:/container/path"
dokku docker-options:add node-js-app deploy "-v /var/log/node-js-app:/app/logs"
dokku docker-options:add node-js-app run "-v /var/log/node-js-app:/app/logs"
Разница в стадиях:
build
- контейнер, в котором все собирается;
deploy
- контейнер, в котором запускается приложение;
run
- контейнер, который запускается при вызове dokku run
.