mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-20 16:15:59 +01:00
Container: Reorganize how to build container image
This commit is contained in:
parent
6705679cf3
commit
38eb50bf5c
58
CONTAINER.md
58
CONTAINER.md
@ -258,23 +258,10 @@ Example using environment variables (see full example [docker-compose.yml](https
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Generating a Container Image
|
Build a Container Image
|
||||||
============================
|
=======================
|
||||||
|
|
||||||
> By default, `.github/container/Dockerfile` builds this container by directly compiling ejabberd,
|
|
||||||
> it is a fast and direct method.
|
|
||||||
>
|
|
||||||
> However, a problem with QEMU prevents building the container in QEMU using Erlang/OTP 25
|
|
||||||
> for the `arm64` architecture.
|
|
||||||
>
|
|
||||||
> Providing `build-args: METHOD=package` is an alternate method to build the container
|
|
||||||
> used by the Github Actions workflow that provides `amd64` and `arm64` container images.
|
|
||||||
> It first builds an ejabberd binary package, and later installs it in the image.
|
|
||||||
> That method avoids using QEMU, so it can build `arm64` container images, but is extremely
|
|
||||||
> slow the first time it's used, and consequently not recommended for general use.
|
|
||||||
|
|
||||||
This container image includes ejabberd as a standalone OTP release built using Elixir.
|
This container image includes ejabberd as a standalone OTP release built using Elixir.
|
||||||
|
|
||||||
That OTP release is configured with:
|
That OTP release is configured with:
|
||||||
|
|
||||||
- `mix.exs`: Customize ejabberd release
|
- `mix.exs`: Customize ejabberd release
|
||||||
@ -282,7 +269,9 @@ That OTP release is configured with:
|
|||||||
- `config/runtime.exs`: Customize ejabberd paths
|
- `config/runtime.exs`: Customize ejabberd paths
|
||||||
- `ejabberd.yml.template`: ejabberd default config file
|
- `ejabberd.yml.template`: ejabberd default config file
|
||||||
|
|
||||||
Build ejabberd Community Server base image from ejabberd master on GitHub:
|
## Direct build
|
||||||
|
|
||||||
|
Build ejabberd Community Server container image from ejabberd master git repository:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
@ -291,18 +280,7 @@ docker buildx build \
|
|||||||
.
|
.
|
||||||
```
|
```
|
||||||
|
|
||||||
Build ejabberd Community Server base image for a given ejabberd version,
|
## Podman build
|
||||||
both for amd64 and arm64 architectures:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
VERSION=22.05
|
|
||||||
git checkout $VERSION
|
|
||||||
docker buildx build \
|
|
||||||
--platform=linux/amd64,linux/arm64
|
|
||||||
-t personal/ejabberd:$VERSION \
|
|
||||||
-f .github/container/Dockerfile \
|
|
||||||
.
|
|
||||||
```
|
|
||||||
|
|
||||||
It's also possible to use podman instead of docker, just notice:
|
It's also possible to use podman instead of docker, just notice:
|
||||||
- `EXPOSE 4369-4399` port range is not supported, remove that in Dockerfile
|
- `EXPOSE 4369-4399` port range is not supported, remove that in Dockerfile
|
||||||
@ -323,6 +301,30 @@ podman exec -it eja1 sh
|
|||||||
podman stop eja1
|
podman stop eja1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Package build for `arm64`
|
||||||
|
|
||||||
|
By default, `.github/container/Dockerfile` builds this container by directly compiling ejabberd,
|
||||||
|
it is a fast and direct method.
|
||||||
|
However, a problem with QEMU prevents building the container in QEMU using Erlang/OTP 25
|
||||||
|
for the `arm64` architecture.
|
||||||
|
|
||||||
|
Providing `--build-arg METHOD=package` is an alternate method to build the container
|
||||||
|
used by the Github Actions workflow that provides `amd64` and `arm64` container images.
|
||||||
|
It first builds an ejabberd binary package, and later installs it in the image.
|
||||||
|
That method avoids using QEMU, so it can build `arm64` container images, but is extremely
|
||||||
|
slow the first time it's used, and consequently not recommended for general use.
|
||||||
|
|
||||||
|
In this case, to build the ejabberd container image for arm64 architecture:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker buildx build \
|
||||||
|
--build-arg METHOD=package \
|
||||||
|
--platform linux/arm64 \
|
||||||
|
-t personal/ejabberd:$VERSION \
|
||||||
|
-f .github/container/Dockerfile \
|
||||||
|
.
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Composer Examples
|
Composer Examples
|
||||||
=================
|
=================
|
||||||
|
Loading…
Reference in New Issue
Block a user