Lewati ke isi

Menggunakan Odoo WOW pada Docker

Repositori pada GItLab - wow.proxsis.com

Memindahkan berkas cadangan dari WOW ke node02

  1. Database
  2. DO space > https://proxsis.nyc3.digitaloceanspaces.com > proxsis > wow-odoo-dbbackup > 201903290000.wow.dump > more > Quick Share > 1 hour > Copy Link
  3. node02 > curl https://nyc3.digitaloceanspaces.com/proxsis/wow-odoo-dbbackup/201903290000.wow.dump?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=BCMARPTWJ6OE5K2AJVOH%2F20190401%2Fnyc3%2Fs3%2Faws4_request&X-Amz-Date=20190401T183334Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=ad2d8312acb749819760dfd0f0d605abfed99492743013afddc4b140a1b67090

Odoo image 10 terbaru

Lokasi

cd ~/repos/proxsis/biztech/wow.proxsis.com/doVPS/opt/official-latest-image

Isi dari direktori adalah berkas seperti yang dapat dilihat pada repositori Odoo Docker pada GitHub, sebagai berikut:

  • Dockerfile
  • entrypoint.sh
  • odoo.conf

Setelah memastikan kesiapan cadangan berkas, seperti:

  • basis data, dalam format *.dump atau .zip
  • filestore, yang umumnya ada pada /var/lib/odoo/filestore atau /var/lib/odoo/.local/share/Odoo/filestore atau lokasi lainnya
  • addons lain yang digunakan

Buat kontainer postgres dan odoo, akses instalasi melalui peramban, lalu pulihkan berkas arsip basis data. Proses pemulihan akan memakan waktu cukup lama, sambil menunggu mari kita ngopi dulu.

Kontainer Postgres

docker container run -ti --rm \
  -e POSTGRES_USER=odoo \
  -e POSTGRES_PASSWORD=odoo \
  -e POSTGRES_DB=postgres \
  -v $(pwd)/.db:/var/lib/postgresql/data \
  --name db-latest \
  postgres:9.4.19

Kontainer Odoo

docker container run -ti --rm \
  -p 8069:8069 \
  -v $(pwd)/.odoo-custom-addons:/mnt/extra-addons \
  -v $(pwd)/.filestore/wow:/var/lib/odoo/filestore/wow \
  -v $(pwd)/.config:/etc/odoo \
  --name odoo-latest \
  --link db-latest:db \
  -t odoo:10.0

  -v $(pwd)/.config:/etc/odoo \

docker-compose.yml

dasar

version: '3.3'
services:

  postgres:
    image: postgres:9.4.19
    environment:
      - POSTGRES_USER=odoo

  odoo:
    image: elicocorp/odoo:10.0
    command: start
    ports:
      - 8069:8069
    links:
      - postgres:db
    environment:
      - ODOO_DB_USER=odoo

security

version: '3.3'
services:

  postgres:
    image: postgres:9.4.19
    environment:
      - POSTGRES_USER=odoo
#      - POSTGRES_USER=postgres
#      - POSTGRES_PASSWORD=strong_pg_superuser_password

  odoo:
    image: elicocorp/odoo:10.0
    command: start
    ports:
      - 8069:8069
#      - 127.0.0.1:8069:8069
    links:
      - postgres:db
    environment:
      - ODOO_ADMIN_PASSWD=strong_odoo_master_password
      - ODOO_DB_USER=odoo
#      - ODOO_DB_PASSWORD=strong_pg_odoo_password

bind volume

mkdir -v -p ./volumes/{postgres,odoo/filestore,odoo/sessions}
version: '3.3'
services:

  postgres:
    image: postgres:9.4.19
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=odoo
#      - POSTGRES_USER=postgres
#      - POSTGRES_PASSWORD=strong_pg_superuser_password

  odoo:
    image: elicocorp/odoo:10.0
    command: start
    ports:
      - 8069:8069
#      - 127.0.0.1:8069:8069
    links:
      - postgres:db
    volumes:
      - ./volumes/odoo/filestore:/opt/odoo/data/filestore
      - ./volumes/odoo/sessions:/opt/odoo/data/sessions
    environment:
      - ODOO_ADMIN_PASSWD=strong_odoo_master_password
      - ODOO_DB_USER=odoo
#      - ODOO_DB_PASSWORD=strong_pg_odoo_password

host user mapping & volumes

testing postgres user mapping (debian based)
#
docker run -it --rm --user www-data postgres
#
docker run -it --rm --user 1000:1000 postgres
#
docker run -it --rm --user "$(id -u):$(id -g)" -v /etc/passwd:/etc/passwd:ro postgres
#
docker volume create pgdata
docker run -it --rm -v pgdata:/var/lib/postgresql/data postgres
docker run -it --rm -v pgdata:/var/lib/postgresql/data bash chown -Rv 1000:1000 /var/lib/postgresql/data
docker run -it --rm --user 1000:1000 -v pgdata:/var/lib/postgresql/data postgres
docker-compose with user mapping
version: '3.3'
services:

  postgres:
    image: postgres:9.4.19
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
      - /etc/passwd:/etc/passwd:ro
    environment:
      - POSTGRES_USER=odoo
#      - POSTGRES_USER=postgres
#      - POSTGRES_PASSWORD=strong_pg_superuser_password
    user: 1000:1000
#    user: 1001:1001

  odoo:
    image: elicocorp/odoo:10.0
    command: start
    ports:
      - 8069:8069
#      - 127.0.0.1:8069:8069
    links:
      - postgres:db
    volumes:
      - ./volumes/odoo/filestore:/opt/odoo/data/filestore
      - ./volumes/odoo/sessions:/opt/odoo/data/sessions
    environment:
      - TARGET_UID=1000
#      - TARGET_UID=1001
      - ODOO_ADMIN_PASSWD=strong_odoo_master_password
      - ODOO_DB_USER=odoo
#      - ODOO_DB_PASSWORD=strong_pg_odoo_password

additional addons from OCA

mkdir -v -p ./volumes/{postgres,odoo/filestore,odoo/sessions,odoo/addons}
version: '3.3'
services:

  postgres:
    image: postgres:9.4.19
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
      - /etc/passwd:/etc/passwd:ro
    environment:
      - POSTGRES_USER=odoo
    user: 1000:1000

  odoo:
    image: elicocorp/odoo:10.0
    command: start
    ports:
      - 8069:8069
      - 127.0.0.1:8072:8072
    links:
      - postgres:db
    volumes:
      - ./volumes/odoo/addons:/opt/odoo/additional_addons
      - ./volumes/odoo/filestore:/opt/odoo/data/filestore
      - ./volumes/odoo/sessions:/opt/odoo/data/sessions
    environment:
#      - FETCH_OCA_DEPENDENCIES=False
      - TARGET_UID=1000
      - ODOO_ADMIN_PASSWD=strong_odoo_master_password
      - ODOO_DB_USER=odoo

custom config & addons

mkdir -v -p ./volumes/{postgres,odoo/filestore,odoo/sessions,odoo/addons,odoo/config}
nano ~/wow.proxsis.com/volumes/odoo/config/odoo.conf
[options]

timezone = Asia/Jakarta

# Specific setup for Docker
db_host = db
db_port = False
data_dir = /opt/odoo/data
db_user = odoo
admin_passwd = strong_odoo_master_password
addons_path = /opt/odoo/additional_addons,/opt/odoo/sources/odoo/addons
version: '3.3'
services:

  postgres:
    image: postgres:9.4.19
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
      - /etc/passwd:/etc/passwd:ro
    environment:
      - POSTGRES_USER=odoo
      # - POSTGRES_USER=postgres
      # - POSTGRES_PASSWORD=strong_pg_superuser_password
    user: 1000:1000

  odoo:
    # image: elicocorp/odoo:10.0
    build: ./build
    image: elicocorp/odoo:10.0
    command: start
    ports:
      - 8069:8069
      - 127.0.0.1:8072:8072
    links:
      - postgres:db
    volumes:
      # - ./volumes/odoo/wow-odoo-custom-addons:/opt/odoo/wow_addons
      - ./volumes/odoo/wow-odoo-custom-addons:/opt/odoo/data/addons/10.0
      - ./volumes/odoo/addons:/opt/odoo/additional_addons
      - ./volumes/odoo/filestore:/opt/odoo/data/filestore
      - ./volumes/odoo/sessions:/opt/odoo/data/sessions
      # - ./volumes/odoo/config/odoo.conf:/opt/odoo/etc/odoo.conf
    environment:
      - FETCH_OCA_DEPENDENCIES=False
      - TARGET_UID=1000
      - ODOO_ADMIN_PASSWD=strong_odoo_master_password
      - ODOO_DB_USER=odoo
      # - ODOO_DB_PASSWORD=strong_pg_odoo_password
docker container exec -it wow-docker_odoo_1 /bin/bash
ls /opt/odoo/{data/addons/10.0,sources/odoo/addons,sources/odoo/odoo/addons}

restore db, filestore, addons

sandi_acak_aman_anda

restore database
curl -F 'master_pwd=strong_odoo_master_password' -F backup_file=@/home/deploy/unduh/201903290000.wow.dump -F 'copy=true' -F 'name=wow' http://localhost:8069/web/database/restore
restore filestore
cp -aRv ~/unduh/var/lib/odoo/.local/share/Odoo/filestore/wow ~/wow-docker/volumes/odoo/filestore/
wow custom modul
git clone https://gitlab+deploy-token-56838:[email protected]/proxsis/biztech/wow-odoo-custom-addons ~/wow.proxsis.com/volumes/odoo/addons/.
OCA addons
nano ~/wow.proxsis.com/volumes/odoo/addons/oca_dependencies.txt
# List the OCA project dependencies, one per line
# Add a repository url and branch if you need a forked version
#
# Examples
# ========
#
# To depend on the standard version of sale-workflow, use:
# sale-workflow
#
# To explicitely give the URL of a fork, and still use the version specified in
# .travis.yml, use:
# sale-workflow https://github.com/OCA/sale-workflow
#
# To provide both the URL and a branch, use:
# sale-workflow https://github.com/OCA/sale-workflow branchname
server-tools https://github.com/OCA/server-tools 10.0

docker-compose exec

docker-compose exec -u odoo odoo bash

Odoo image 10 wow.proxsis.com

Lokasi:

cd ~/repos/proxsis/biztech/wow.proxsis.com/doVPS/opt/official-production-image

TODO:

TODO

Koreksi zona waktu

ENV TZ=Asia/Jakarta
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Penyesuaian versi Odoo 10.0-20180703

Membuat Docker Image

docker image build \
  --build-arg http_proxy=http://172.17.0.1:3142 \
  --build-arg https_proxy=http://172.17.0.1:3142 \
  --rm --tag odoo-wow:10.0 .
--no-cache 

Kontainer Postgres - prod

docker container run -ti --rm \
  -e POSTGRES_USER=odoo \
  -e POSTGRES_PASSWORD=odoo \
  -e POSTGRES_DB=postgres \
  -v $(pwd)/.db:/var/lib/postgresql/data \
  --name db-prod \
  postgres:9.4.19

Kontainer Odoo - prod

docker container run -ti --rm \
  -p 8110:8069 \
  -v $(pwd)/.odoo-custom-addons:/mnt/extra-addons \
  -v $(pwd)/.filestore/wow:/var/lib/odoo/filestore/wow \
  --name odoo-prod \
  --link db-prod:db-prod \
  -t odoo-wow:10.0 
docker container run -ti --rm \
  -p 8110:8069 \
  --name odoo-prod \
  -t odoo-wow:10.0 /bin/bash

Rujukan

  1. https://hub.docker.com/_/postgres
  2. https://github.com/docker-library/postgres/tree/master/9.4
  3. https://hub.docker.com/_/odoo
  4. https://github.com/odoo/docker/tree/master/10.0
  5. https://hub.docker.com/_/nginx
  6. https://github.com/nginxinc/docker-nginx/tree/master/stable/stretch
  7. http://nightly.odoo.com/10.0/nightly/deb/
  8. https://github.com/Elico-Corp/odoo-docker#host-user-mapping
  9. https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user
  10. https://hub.docker.com/_/postgres/#arbitrary---user-notes
  11. https://docs.docker.com/compose/compose-file/#variable-substitution
  12. https://github.com/OCA/maintainer-quality-tools/blob/master/sample_files