diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 55c27d8188..0e01dd85be 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -6,7 +6,7 @@ In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal +level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards diff --git a/compose.yaml b/compose.yaml index be9fe7ea64..d9aa6ee149 100644 --- a/compose.yaml +++ b/compose.yaml @@ -2,7 +2,8 @@ x-customizable-image: &customizable_image # By default the image used only contains the `frappe` and `erpnext` apps. # See https://github.com/frappe/frappe_docker/blob/main/docs/custom-apps.md # about using custom images. - image: frappe/erpnext:${ERPNEXT_VERSION:?No ERPNext version set} + image: ${CUSTOM_IMAGE:-frappe/erpnext}:${CUSTOM_TAG:-${ERPNEXT_VERSION:?No ERPNext version or tag set}} + pull_policy: ${PULL_POLICY:-always} x-depends-on-configurator: &depends_on_configurator depends_on: @@ -32,10 +33,10 @@ services: bench set-config -g redis_socketio "redis://$$REDIS_QUEUE"; bench set-config -gp socketio_port $$SOCKETIO_PORT; environment: - DB_HOST: ${DB_HOST} - DB_PORT: ${DB_PORT} - REDIS_CACHE: ${REDIS_CACHE} - REDIS_QUEUE: ${REDIS_QUEUE} + DB_HOST: ${DB_HOST:-} + DB_PORT: ${DB_PORT:-} + REDIS_CACHE: ${REDIS_CACHE:-} + REDIS_QUEUE: ${REDIS_QUEUE:-} SOCKETIO_PORT: 9000 depends_on: {} diff --git a/docs/custom-apps.md b/docs/custom-apps.md index bc5194dd28..f33aa3c7d8 100644 --- a/docs/custom-apps.md +++ b/docs/custom-apps.md @@ -104,14 +104,34 @@ More about [kaniko](https://github.com/GoogleContainerTools/kaniko) ### Use Images -On the [compose.yaml](../compose.yaml) replace the image reference to the `tag` you used when you built it. Then, if you used a tag like `custom_erpnext:staging` the `x-customizable-image` section will look like this: +In the [compose.yaml](../compose.yaml), you can set the image name and tag through environment variables, making it easier to customize. -``` +```yaml x-customizable-image: &customizable_image - image: custom_erpnext:staging - pull_policy: never + image: ${CUSTOM_IMAGE:-frappe/erpnext}:${CUSTOM_TAG:-${ERPNEXT_VERSION:?No ERPNext version or tag set}} + pull_policy: ${PULL_POLICY:-always} ``` -The `pull_policy` above is optional and prevents `docker` to try to download the image when that one has been built locally. +The environment variables can be set in the shell or in the .env file as [setup-options.md](setup-options.md) describes. + +- `CUSTOM_IMAGE`: The name of your custom image. Defaults to `frappe/erpnext` if not set. +- `CUSTOM_TAG`: The tag for your custom image. Must be set if `CUSTOM_IMAGE` is used. Defaults to the value of `ERPNEXT_VERSION` if not set. +- `PULL_POLICY`: The Docker pull policy. Defaults to `always`. Recommended set to `never` for local images, so prevent `docker` from trying to download the image when it has been built locally. +- `HTTP_PUBLISH_PORT`: The port to publish through no SSL channel. Default depending on deployment, it may be `80` if SSL activated or `8080` if not. +- `HTTPS_PUBLISH_PORT`: The secure port to publish using SSL. Default is `443`. Make sure image name is correct to be pushed to registry. After the images are pushed, you can pull them to servers to be deployed. If the registry is private, additional auth is needed. + +#### Example + +If you built an image with the tag `ghcr.io/user/repo/custom:1.0.0`, you would set the environment variables as follows: + +```bash +export CUSTOM_IMAGE='ghcr.io/user/repo/custom' +export CUSTOM_TAG='1.0.0' +docker compose -f compose.yaml \ + -f overrides/compose.mariadb.yaml \ + -f overrides/compose.redis.yaml \ + -f overrides/compose.https.yaml \ + config > ~/gitops/docker-compose.yaml +``` diff --git a/overrides/compose.https.yaml b/overrides/compose.https.yaml index a34e2d3cf9..aa17a68e55 100644 --- a/overrides/compose.https.yaml +++ b/overrides/compose.https.yaml @@ -21,8 +21,8 @@ services: - --certificatesResolvers.main-resolver.acme.email=${LETSENCRYPT_EMAIL:?No Let's Encrypt email set} - --certificatesResolvers.main-resolver.acme.storage=/letsencrypt/acme.json ports: - - 80:80 - - 443:443 + - ${HTTP_PUBLISH_PORT:-80}:80 + - ${HTTPS_PUBLISH_PORT:-443}:443 volumes: - cert-data:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock:ro diff --git a/overrides/compose.noproxy.yaml b/overrides/compose.noproxy.yaml index 5c4f83c0e7..23239ff21e 100644 --- a/overrides/compose.noproxy.yaml +++ b/overrides/compose.noproxy.yaml @@ -1,4 +1,4 @@ services: frontend: ports: - - 8080:8080 + - ${HTTP_PUBLISH_PORT:-8080}:8080 diff --git a/overrides/compose.proxy.yaml b/overrides/compose.proxy.yaml index d2dc319a86..c887ffa5a0 100644 --- a/overrides/compose.proxy.yaml +++ b/overrides/compose.proxy.yaml @@ -13,7 +13,7 @@ services: - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 ports: - - 80:80 + - ${HTTP_PUBLISH_PORT:-80}:80 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro userns_mode: host diff --git a/overrides/compose.traefik-ssl.yaml b/overrides/compose.traefik-ssl.yaml index 0c0a9b8460..be996f54bb 100644 --- a/overrides/compose.traefik-ssl.yaml +++ b/overrides/compose.traefik-ssl.yaml @@ -40,7 +40,7 @@ services: # Enable the Dashboard and API - --api ports: - - 443:443 + - ${HTTPS_PUBLISH_PORT:-443}:443 volumes: - cert-data:/certificates diff --git a/overrides/compose.traefik.yaml b/overrides/compose.traefik.yaml index f3e64f6c3a..1e4432ff2d 100644 --- a/overrides/compose.traefik.yaml +++ b/overrides/compose.traefik.yaml @@ -35,7 +35,7 @@ services: # Enable the Dashboard and API - --api ports: - - 80:80 + - ${HTTP_PUBLISH_PORT:-80}:80 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: