Skip to content

Latest commit

 

History

History
102 lines (81 loc) · 3.26 KB

custom-apps-podman.md

File metadata and controls

102 lines (81 loc) · 3.26 KB

Prerequisites

  • podman
  • podman-compose
  • docker-compose

Podman (the POD MANager) is a tool for managing containers and images, volumes mounted into those containers, and pods made from groups of containers. It is available on the official repositories of many Linux distributions.

Step 1

  • Clone this repository and change the current directory to the downloaded folder
      git clone https://github.com/frappe/frappe_docker
      cd frappe_docker

Step 2

  • Create apps.json file with custom apps listed in it
    [
      {
        "url": "https://github.com/frappe/erpnext",
        "branch": "version-15"
      },
      {
        "url": "https://github.com/frappe/hrms",
        "branch": "version-15"
      },
      {
        "url": "https://github.com/frappe/helpdesk",
        "branch": "main"
      }
    ]
    Check the syntax of the file using jq empty apps.json

    Generate base64 string from JSON file:

    cmd export APPS_JSON_BASE64=$(base64 -w 0 apps.json)

Step 3

  • Building the custom image using podman
  podman build \
   --build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \
   --build-arg=FRAPPE_BRANCH=version-15 \
   --build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \
   --tag=custom:15 \
   --file=images/layered/Containerfile .

Note

  • Make sure to use the same tag when you export a variable on the next step

Step 4

  • Using the image
  • Export environment variables with image name, tag and pull_policy
        export CUSTOM_IMAGE=custom
        export CUSTOM_TAG=15
        export PULL_POLICY=never
  • Configuration of parameters used when starting the containers
    • create .env file copying from example.env (Read more on setting up environment variables here

Final step

  • Creating a compose file
  •  podman compose -f compose.yaml \
    -f overrides/compose.mariadb.yaml \
    -f overrides/compose.redis.yaml \
    -f overrides/compose.noproxy.yaml \
    config > ./docker-compose.yml

    NOTE

    • podman compose is just a wrapper, it uses docker-compose if it is available or podman-compose if not. podman-compose have an issue reading .env files (Issue) and might create an issue when running the containers.
  • Creating pod and starting the containers
    • podman-compose --in-pod=1 --project-name erpnext -f ./docker-compose.yml up -d

Creating sites and installing apps

  • You can create sites from the backend container
    • podman exec -ti erpnext_backend_1 /bin/bash
      • bench new-site myerp.net --mariadb-root-password 123456 --admin-password 123123
      • bench --site myerp.net install-app erpnext

Troubleshoot

  • If there is a network issue while building the image, you need to remove caches and restart again

    • podman system reset
    • sudo rm -rf ~/.local/share/containers/ /var/lib/container ~/.caches/containers
  • Database issue when restarting the container

    • Execute the following commands from backend container
    • mysql -uroot -padmin -hdb (Note: put your db password in place of admin).
    • SELECT User, Host FROM mysql.user;
    • Change the IP address to %, e.g. RENAME USER '_5e5899d8398b5f7b'@'172.18.0.7' TO '_5e5899d8398b5f7b'@'%'