diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f66c88..8d3c51a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,14 +6,19 @@ on: pull_request: branches: [main] schedule: - - cron: 0 0 * * 0 + - cron: "0 0 * * 0" + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true jobs: build: strategy: matrix: - version: [3.8, 3.7, 3.6] + version: ["3.8", "3.7", "3.6"] image: [glacier2, icegridregistry, icegridnode, icestorm] + fail-fast: false runs-on: ubuntu-latest @@ -23,4 +28,47 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + zeroc/${{ matrix.image }} + ghcr.io/zeroc-ice/${{ matrix.image }} + tags: | + type=raw,value=${{ matrix.version }} + type=raw,value=latest,enable=${{ matrix.version == '3.8' }} + + - name: Login to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GHCR + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ${{ matrix.version }}/${{ matrix.image }} + push: ${{ github.event_name != 'pull_request' }} + platforms: ${{ matrix.version == '3.6' && 'linux/amd64' || 'linux/amd64,linux/arm64' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..390b622 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,7 @@ +{ + "no-duplicate-heading": { + "siblings_only": true + }, + "line-length": false, + "single-h1": false +} diff --git a/3.6/glacier2/Dockerfile b/3.6/glacier2/Dockerfile index be604ff..6156815 100644 --- a/3.6/glacier2/Dockerfile +++ b/3.6/glacier2/Dockerfile @@ -2,15 +2,13 @@ FROM ubuntu:16.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG GLACIER2_VERSION=3.6.5 - ARG DEBIAN_FRONTEND=noninteractive RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997 \ - && echo "deb http://download.zeroc.com/Ice/3.6/ubuntu16.04 stable main" >> /etc/apt/sources.list.d/ice.list \ + && echo "deb http://download.zeroc.com/ice/3.6/ubuntu16.04 stable main" >> /etc/apt/sources.list.d/ice.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-glacier2=${GLACIER2_VERSION}-* \ + zeroc-glacier2 \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* EXPOSE 4063 4064 diff --git a/3.6/icegridnode/Dockerfile b/3.6/icegridnode/Dockerfile index b9cafab..c767730 100644 --- a/3.6/icegridnode/Dockerfile +++ b/3.6/icegridnode/Dockerfile @@ -2,18 +2,16 @@ FROM ubuntu:16.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG ICEGRID_VERSION=3.6.5 - ARG DEBIAN_FRONTEND=noninteractive RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997 \ - && echo "deb http://download.zeroc.com/Ice/3.6/ubuntu16.04 stable main" >> /etc/apt/sources.list.d/ice.list \ + && echo "deb http://download.zeroc.com/ice/3.6/ubuntu16.04 stable main" >> /etc/apt/sources.list.d/ice.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-icegrid=${ICEGRID_VERSION}-* \ + zeroc-icegrid \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -EXPOSE 4061 4062 +EXPOSE 4061 VOLUME ["/var/lib/ice/icegrid"] diff --git a/3.6/icegridregistry/Dockerfile b/3.6/icegridregistry/Dockerfile index 8a479ea..48621ea 100644 --- a/3.6/icegridregistry/Dockerfile +++ b/3.6/icegridregistry/Dockerfile @@ -2,18 +2,16 @@ FROM ubuntu:16.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG ICEGRID_VERSION=3.6.5 - ARG DEBIAN_FRONTEND=noninteractive RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997 \ && echo "deb http://download.zeroc.com/Ice/3.6/ubuntu16.04 stable main" >> /etc/apt/sources.list.d/ice.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-icegrid=${ICEGRID_VERSION}-* \ + zeroc-icegrid \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -EXPOSE 4061 4062 +EXPOSE 4061 VOLUME ["/var/lib/ice/icegrid"] diff --git a/3.6/icestorm/Dockerfile b/3.6/icestorm/Dockerfile index 04be76c..5ffee4d 100644 --- a/3.6/icestorm/Dockerfile +++ b/3.6/icestorm/Dockerfile @@ -2,20 +2,18 @@ FROM ubuntu:16.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG ICEBOX_VERSION=3.6.5 - ARG DEBIAN_FRONTEND=noninteractive RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997 \ && echo "deb http://download.zeroc.com/Ice/3.6/ubuntu16.04 stable main" >> /etc/apt/sources.list.d/ice.list \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-icebox=${ICEBOX_VERSION}-* \ - libzeroc-icestorm3.6=${ICEBOX_VERSION}-* \ + zeroc-icebox \ + libzeroc-icestorm3.6 \ && rm -rf /var/lib/apt/lists/* VOLUME ["/data"] ENTRYPOINT ["/usr/bin/icebox", "--IceBox.Service.IceStorm=IceStormService,36:createIceStorm \ - --Ice.Config=/etc/icestorm.conf \ - --Freeze.DbEnv.IceStorm.DbHome=/data"] + --Ice.Config=/etc/icestorm.conf \ + --Freeze.DbEnv.IceStorm.DbHome=/data"] diff --git a/3.7/glacier2/Dockerfile b/3.7/glacier2/Dockerfile index 1fff70a..3a40bec 100644 --- a/3.7/glacier2/Dockerfile +++ b/3.7/glacier2/Dockerfile @@ -2,7 +2,6 @@ FROM ubuntu:22.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG GLACIER2_VERSION=3.7.10 ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r ice && useradd -r -g ice ice @@ -21,12 +20,12 @@ RUN mkdir -p /etc/apt/keyrings \ RUN apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-glacier2=${GLACIER2_VERSION}-* \ + zeroc-glacier2 \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN sed -i '/^Ice\.UseSystemdJournal=1/d' /etc/glacier2router.conf \ && sed -i 's/^Glacier2\.Client.Endpoints=.*/Glacier2\.Client\.Endpoints=tcp -h 0\.0\.0\.0 -p 4063/' /etc/glacier2router.conf \ - && sed -i 's/^Glacier2\.Server\.Endpoints=*/#Glacier2\.Server\.Endpoints=/' /etc/glacier2router.conf + && sed -i 's/^Glacier2\.Server\.Endpoints=.*/#Glacier2\.Server\.Endpoints=/' /etc/glacier2router.conf EXPOSE 4063 4064 diff --git a/3.7/glacier2/README.md b/3.7/glacier2/README.md deleted file mode 100644 index 555c145..0000000 --- a/3.7/glacier2/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Supported tags and respective `Dockerfile` links - -- [`latest`, `3.7`, `3.7.10` (*3.7/glacier2/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.7/glacier2/Dockerfile) -- [`3.6`, `3.6.5` (*3.6/glacier2/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.6/glacier2/Dockerfile) - -# What is Glacier2? - -[Glacier2](https://zeroc.com/products/ice/services/glacier2) allows you to securely route [Ice](https://zeroc.com) communications across networks, such as the public Internet and a private network behind a firewall. With Glacier2, you only need to open one port in your firewall to make multiple back-end Ice servers reachable by remote Ice clients on the Internet. These clients and servers can be on their own local networks behind firewalls and NATs - you don't need to worry about translating addresses and ports as Glacier2 handles all this for you. - -# How to use this image - -## Start `glacier2` service - -Using a configuration file: - -```shell -docker run --detach --name glacier2router -p 4063:4063 -v /path/to/config:/etc/glacier2router.conf:ro zeroc/glacier2 -``` - -Using command line arguments: - -```shell -docker run --detach --name glacier2router -p 4063:4063 zeroc/glacier2 -``` - -Refer to the [Glacier2 documentation](https://doc.zeroc.com/display/Ice/Glacier2) for more information on how to configure Glacier2. diff --git a/3.7/icegridnode/Dockerfile b/3.7/icegridnode/Dockerfile index 81b0dca..da08541 100644 --- a/3.7/icegridnode/Dockerfile +++ b/3.7/icegridnode/Dockerfile @@ -2,7 +2,6 @@ FROM ubuntu:22.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG ICEGRID_VERSION=3.7.10 ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice @@ -21,7 +20,7 @@ RUN mkdir -p /etc/apt/keyrings \ RUN apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-icegrid=${ICEGRID_VERSION}-* \ + zeroc-icegrid \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN sed -i '/^Ice.UseSystemdJournal=1/d' /etc/icegridnode.conf \ @@ -30,7 +29,7 @@ RUN sed -i '/^Ice.UseSystemdJournal=1/d' /etc/icegridnode.conf \ && sed -i 's/^Ice.Default.Locator=.*/#Ice.Default.Locator=/' /etc/icegridnode.conf \ && sed -i 's/IceGrid.Node.Endpoints=.*/IceGrid.Node.Endpoints=tcp -h 0\.0\.0\.0/' /etc/icegridnode.conf -EXPOSE 4061 4062 +EXPOSE 4061 VOLUME ["/var/lib/ice/icegrid"] diff --git a/3.7/icegridnode/README.md b/3.7/icegridnode/README.md deleted file mode 100644 index bbaa7a6..0000000 --- a/3.7/icegridnode/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Supported tags and respective `Dockerfile` links - -- [`latest`, `3.7`, `3.7.8` (*3.7/icegridnode/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.7/icegridnode/Dockerfile) -- [`3.6`, `3.6.5` (*3.6/icegridnode/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.6/icegridnode/Dockerfile) - -# What is IceGrid? - -[IceGrid](https://zeroc.com/products/ice/services/icegrid) is a location and activation service for [Ice](https://zeroc.com) applications. - -# How to use this image - -## Start `icegridnode` service - -Using a configuration file: - -```shell -docker run --detach --name some-icegridnode -v data:/var/lib/ice/icegrid -v /path/to/config/:/etc/icegridnode.conf:ro zeroc/icegridnode -``` - -Using command line arguments: - -```shell -docker run --detach --name some-icegridnode zeroc/icegridnode -v data:/var/lib/ice/icegrid --IceGrid.Node.Name=MyNode --Ice.Default.Locator="IceGrid/Locator:tcp -h icegridregistry -p 4061" -``` - -Refer to the [IceGrid documentation](https://doc.zeroc.com/display/Ice/IceGrid) for more information on how to configure an IceGrid Node. - -## Data volume - -The IceGrid Node container stores its data in a Docker volume mounted at `/var/lib/ice/icegrid`. diff --git a/3.7/icegridregistry/Dockerfile b/3.7/icegridregistry/Dockerfile index 41ea2eb..0e301f5 100644 --- a/3.7/icegridregistry/Dockerfile +++ b/3.7/icegridregistry/Dockerfile @@ -2,7 +2,6 @@ FROM ubuntu:22.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG ICEGRID_VERSION=3.7.10 ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice @@ -21,7 +20,7 @@ RUN mkdir -p /etc/apt/keyrings \ RUN apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-icegrid=${ICEGRID_VERSION}-* \ + zeroc-icegrid \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN sed -i '/^Ice.UseSystemdJournal=1/d' /etc/icegridregistry.conf \ @@ -29,9 +28,9 @@ RUN sed -i '/^Ice.UseSystemdJournal=1/d' /etc/icegridregistry.conf \ && sed -i 's/^IceGrid\.Registry\.Server\.Endpoints=.*/IceGrid\.Registry\.Server\.Endpoints=tcp -h 0\.0\.0\.0/' /etc/icegridregistry.conf \ && sed -i 's/^IceGrid\.Registry\.Internal\.Endpoints=.*/IceGrid\.Registry\.Internal\.Endpoints=tcp -h 0\.0\.0\.0/' /etc/icegridregistry.conf -EXPOSE 4061 4062 +EXPOSE 4061 -VOLUME ["/var/lib/ice/icegrid/"] +VOLUME ["/var/lib/ice/icegrid"] COPY ./docker-entrypoint.sh / ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/3.7/icegridregistry/README.md b/3.7/icegridregistry/README.md deleted file mode 100644 index 9340fa4..0000000 --- a/3.7/icegridregistry/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Supported tags and respective `Dockerfile` links - -- [`latest`, `3.7`, `3.7.8` (*3.7/icegridregistry/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.7/icegridregistry/Dockerfile) -- [`3.6`, `3.6.5` (*3.6/icegridregistry/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.6/icegridregistry/Dockerfile) -## What is IceGrid? - -[IceGrid](https://zeroc.com/products/ice/services/icegrid) is a location and activation service for [Ice](https://zeroc.com) applications. -## How to use this image -### Start `icegridregistry` service - -Using a configuration file: - -```shell -docker run --detach --name some-icegridregistry -v data:/var/lib/ice/icegrid -v /path/to/config/:/etc/icegridregistry.conf:ro zeroc/icegridregistry -``` - -Using command line arguments: - -```shell -docker run --detach --name some-icegridregistry -p 4061:4061 -v data:/var/lib/ice/icegrid zeroc/icegridregistry --IceGrid.Registry.Name=MyRegistry -``` - -Refer to the [IceGrid documentation](https://doc.zeroc.com/display/Ice/IceGrid) for more information on how to configure an IceGrid Registry. -### Data volume - -The IceGrid Registry container stores its data in a Docker volume mounted at `/var/lib/ice/icegrid`. diff --git a/3.7/icestorm/Dockerfile b/3.7/icestorm/Dockerfile index 286e0c5..8394868 100644 --- a/3.7/icestorm/Dockerfile +++ b/3.7/icestorm/Dockerfile @@ -2,7 +2,6 @@ FROM ubuntu:22.04 LABEL maintainer="docker-maintainers@zeroc.com" -ARG ICEBOX_VERSION=3.7.10 ARG DEBIAN_FRONTEND=noninteractive RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice @@ -21,8 +20,8 @@ RUN mkdir -p /etc/apt/keyrings \ RUN apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y \ - zeroc-icebox=${ICEBOX_VERSION}-* \ - libzeroc-icestorm3.7=${ICEBOX_VERSION}-* \ + zeroc-icebox \ + libzeroc-icestorm3.7 \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* VOLUME ["/data"] diff --git a/3.7/icestorm/README.md b/3.7/icestorm/README.md deleted file mode 100644 index a6ac837..0000000 --- a/3.7/icestorm/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Supported tags and respective `Dockerfile` links - -- [`latest`, `3.7`, `3.7.8` (*3.7/icestorm/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.7/icestorm/Dockerfile) -- [`3.6`, `3.6.5` (*3.6/icestorm/Dockerfile*)](https://github.com/zeroc-ice/ice-dockerfiles/blob/master/3.6/icestorm/Dockerfile) - -# What is IceStorm? - -[IceStorm](https://zeroc.com/products/ice/services/icestorm) is a publish-subscribe event distribution service that helps you create push applications using the [Ice](https://zeroc.com) RPC framework. - -# How to use this image - -## Start `icestorm` service - -From a configuration file: - -```shell -docker run --detach --name some-icestorm -v /path/to/config:/etc/icestorm.conf:ro zeroc/icestorm -``` - -From command line arguments: - -```shell -docker run --detach --name some-icestorm zeroc/icestorm --IceStorm.TopicManager.Endpoints="tcp -h 0.0.0.0 -p 9999" --IceStorm.Publish.Endpoints="tcp -h 0.0.0.0 -p 10000" -``` - -Refer to the [IceStorm documentation](https://doc.zeroc.com/display/Ice/IceStorm) for more information on how to configure IceStorm. - -## Database volume - -The IceStorm container stores its data in a Docker volume mounted at `/data`. diff --git a/3.8/glacier2/Dockerfile b/3.8/glacier2/Dockerfile new file mode 100644 index 0000000..3a8fda0 --- /dev/null +++ b/3.8/glacier2/Dockerfile @@ -0,0 +1,31 @@ +FROM ubuntu:24.04 + +LABEL maintainer="docker-maintainers@zeroc.com" + +ARG DEBIAN_FRONTEND=noninteractive + +RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice + +RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \ + ca-certificates \ + curl \ + gosu \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN curl -fsSL "https://download.zeroc.com/ice/3.8/ubuntu24.04/ice-repo-3.8_1.0_all.deb" -o /tmp/ice-repo.deb \ + && dpkg -i /tmp/ice-repo.deb \ + && rm /tmp/ice-repo.deb \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + zeroc-glacier2 \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN sed -i '/^Ice\.UseSystemdJournal=1/d' /etc/glacier2router.conf \ + && sed -i 's/^Glacier2\.Client.Endpoints=.*/Glacier2\.Client\.Endpoints=tcp -h 0\.0\.0\.0 -p 4063/' /etc/glacier2router.conf \ + && sed -i 's/^Glacier2\.Server\.Endpoints=.*/#Glacier2\.Server\.Endpoints=/' /etc/glacier2router.conf + +EXPOSE 4063 4064 + +COPY ./docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["glacier2router", "--Ice.Config=/etc/glacier2router.conf"] diff --git a/3.8/glacier2/docker-entrypoint.sh b/3.8/glacier2/docker-entrypoint.sh new file mode 100755 index 0000000..9821e74 --- /dev/null +++ b/3.8/glacier2/docker-entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +if [ "${1:0:1}" = '-' ]; then + set -- glacier2router --Ice.Config=/etc/glacier2router.conf "$@" +fi + +if [ "$1" = "glacier2router" ]; then + echo "starting Glacier2 router..." + exec gosu ice "$@" +fi + +exec "$@" diff --git a/3.8/icegridnode/Dockerfile b/3.8/icegridnode/Dockerfile new file mode 100644 index 0000000..fbad926 --- /dev/null +++ b/3.8/icegridnode/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:24.04 + +LABEL maintainer="docker-maintainers@zeroc.com" + +ARG DEBIAN_FRONTEND=noninteractive + +RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice + +RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \ + ca-certificates \ + curl \ + gosu \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN curl -fsSL "https://download.zeroc.com/ice/3.8/ubuntu24.04/ice-repo-3.8_1.0_all.deb" -o /tmp/ice-repo.deb \ + && dpkg -i /tmp/ice-repo.deb \ + && rm /tmp/ice-repo.deb \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + zeroc-icegrid \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN sed -i '/^Ice.UseSystemdJournal=1/d' /etc/icegridnode.conf \ + && sed -i 's/^IceGrid\.Node\.Data=.*/IceGrid\.Node\.Data=\/var\/lib\/ice\/icegrid/' /etc/icegridnode.conf \ + && sed -i 's/^IceGrid\.Node\.Output=.*/#IceGrid\.Node\.Output=\/var\/lib\/ice\/icegrid/' /etc/icegridnode.conf \ + && sed -i 's/^Ice.Default.Locator=.*/#Ice.Default.Locator=/' /etc/icegridnode.conf \ + && sed -i 's/IceGrid.Node.Endpoints=.*/IceGrid.Node.Endpoints=tcp -h 0\.0\.0\.0/' /etc/icegridnode.conf + +EXPOSE 4061 + +VOLUME ["/var/lib/ice/icegrid"] + +COPY ./docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] + +CMD ["icegridnode", "--Ice.Config=/etc/icegridnode.conf"] diff --git a/3.8/icegridnode/docker-entrypoint.sh b/3.8/icegridnode/docker-entrypoint.sh new file mode 100755 index 0000000..7a77588 --- /dev/null +++ b/3.8/icegridnode/docker-entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +if [ "${1:0:1}" = '-' ]; then + set -- icegridnode --Ice.Config=/etc/icegridnode.conf "$@" +fi + +if [ "$1" = "icegridnode" ]; then + echo "starting icegridnode..." + chown -R ice:ice /var/lib/ice/icegrid + exec gosu ice "$@" +fi + +exec "$@" diff --git a/3.8/icegridregistry/Dockerfile b/3.8/icegridregistry/Dockerfile new file mode 100644 index 0000000..487a6ac --- /dev/null +++ b/3.8/icegridregistry/Dockerfile @@ -0,0 +1,35 @@ +FROM ubuntu:24.04 + +LABEL maintainer="docker-maintainers@zeroc.com" + +ARG DEBIAN_FRONTEND=noninteractive + +RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice + +RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \ + ca-certificates \ + curl \ + gosu \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN curl -fsSL "https://download.zeroc.com/ice/3.8/ubuntu24.04/ice-repo-3.8_1.0_all.deb" -o /tmp/ice-repo.deb \ + && dpkg -i /tmp/ice-repo.deb \ + && rm /tmp/ice-repo.deb \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + zeroc-icegrid \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN sed -i '/^Ice.UseSystemdJournal=1/d' /etc/icegridregistry.conf \ + && sed -i 's/^IceGrid\.Registry\.Client\.Endpoints=.*/IceGrid\.Registry\.Client\.Endpoints=tcp -h 0\.0\.0\.0 -p 4061/' /etc/icegridregistry.conf \ + && sed -i 's/^IceGrid\.Registry\.Server\.Endpoints=.*/IceGrid\.Registry\.Server\.Endpoints=tcp -h 0\.0\.0\.0/' /etc/icegridregistry.conf \ + && sed -i 's/^IceGrid\.Registry\.Internal\.Endpoints=.*/IceGrid\.Registry\.Internal\.Endpoints=tcp -h 0\.0\.0\.0/' /etc/icegridregistry.conf + +EXPOSE 4061 + +VOLUME ["/var/lib/ice/icegrid"] + +COPY ./docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] + +CMD ["icegridregistry", "--Ice.Config=/etc/icegridregistry.conf"] diff --git a/3.8/icegridregistry/docker-entrypoint.sh b/3.8/icegridregistry/docker-entrypoint.sh new file mode 100755 index 0000000..cbb3fb5 --- /dev/null +++ b/3.8/icegridregistry/docker-entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +if [ "${1:0:1}" = '-' ]; then + set -- icegridregistry --Ice.Config=/etc/icegridregistry.conf "$@" +fi + +if [ "$1" = "icegridregistry" ]; then + echo "starting icegridregistry..." + chown -R ice:ice /var/lib/ice/icegrid + exec gosu ice "$@" +fi + +exec "$@" diff --git a/3.8/icestorm/Dockerfile b/3.8/icestorm/Dockerfile new file mode 100644 index 0000000..4b52221 --- /dev/null +++ b/3.8/icestorm/Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:24.04 + +LABEL maintainer="docker-maintainers@zeroc.com" + +ARG DEBIAN_FRONTEND=noninteractive + +RUN groupadd -r ice && useradd -r -m -d /var/lib/ice -g ice ice + +RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \ + ca-certificates \ + curl \ + gosu \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN curl -fsSL "https://download.zeroc.com/ice/3.8/ubuntu24.04/ice-repo-3.8_1.0_all.deb" -o /tmp/ice-repo.deb \ + && dpkg -i /tmp/ice-repo.deb \ + && rm /tmp/ice-repo.deb \ + && apt-get update \ + && apt-get install --no-install-recommends --no-install-suggests -y \ + zeroc-icestorm \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +VOLUME ["/data"] + +COPY ./docker-entrypoint.sh / +ENTRYPOINT ["/docker-entrypoint.sh"] + +CMD ["icebox", "--IceBox.Service.IceStorm=IceStormService,38:createIceStorm", "--IceStorm.LMDB.Path=/data"] diff --git a/3.8/icestorm/docker-entrypoint.sh b/3.8/icestorm/docker-entrypoint.sh new file mode 100755 index 0000000..073da0c --- /dev/null +++ b/3.8/icestorm/docker-entrypoint.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e + +[ -e /data ] || mkdir /data + +if [ "${1:0:1}" = '-' ]; then + set -- icebox --IceBox.Service.IceStorm=IceStormService,38:createIceStorm --IceStorm.LMDB.Path=/data "$@" +fi + +if [ "$1" = "icebox" ]; then + echo "starting icestorm..." + chown -R ice:ice /data + exec gosu ice "$@" +fi + +exec "$@" diff --git a/Makefile b/Makefile deleted file mode 100644 index c862f0b..0000000 --- a/Makefile +++ /dev/null @@ -1,39 +0,0 @@ - -define build - cd 3.7/$1 && docker build --platform linux/amd64 -t zeroc/$1:latest -f Dockerfile . -endef - -define tag - docker tag zeroc/$1:latest zeroc/$1:3.7 - docker tag zeroc/$1:latest zeroc/$1:3.7.10 -endef - -define push - docker push zeroc/$1:latest - docker push zeroc/$1:3.7 - docker push zeroc/$1:3.7.10 -endef - -.PHONY:build -build: - @echo "Building..." - $(call build,glacier2) - $(call build,icegridnode) - $(call build,icegridregistry) - $(call build,icestorm) - -.PHONY:tag -tag: - @echo "Tagging" - $(call tag,glacier2) - $(call tag,icegridnode) - $(call tag,icegridregistry) - $(call tag,icestorm) - -.PHONY:push -push: - @echo "Pushing..." - $(call push,glacier2) - $(call push,icegridnode) - $(call push,icegridregistry) - $(call push,icestorm) diff --git a/docs/glacier2/README.md b/docs/glacier2/README.md new file mode 100644 index 0000000..49ebb30 --- /dev/null +++ b/docs/glacier2/README.md @@ -0,0 +1,43 @@ +# Quick reference + +- **Maintained by**: [ZeroC, Inc.](https://zeroc.com) + +- **Where to get help**: [Ice Discussions](https://github.com/zeroc-ice/ice/discussions) + +- **Where to file issues**: [GitHub Issues](https://github.com/zeroc-ice/ice-dockerfiles/issues) + +- **Supported architectures**: `amd64`, `arm64` (except for 3.6 which is `amd64` only) + +- **Source repository**: [GitHub](https://github.com/zeroc-ice/ice-dockerfiles) + +- **Available on**: + - [Docker Hub](https://hub.docker.com/r/zeroc/glacier2): `docker pull zeroc/glacier2` + - [GitHub Container Registry](https://github.com/orgs/zeroc-ice/packages): `docker pull ghcr.io/zeroc-ice/glacier2` + +# Supported tags and respective `Dockerfile` links + +- [`latest`, `3.8`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.8/glacier2/Dockerfile) +- [`3.7`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.7/glacier2/Dockerfile) +- [`3.6`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.6/glacier2/Dockerfile) + +# What is Glacier2? + +[Glacier2](https://zeroc.com/products/ice/services/glacier2) allows you to securely route [Ice](https://zeroc.com) communications across networks, such as the public Internet and a private network behind a firewall. With Glacier2, you only need to open one port in your firewall to make multiple back-end Ice servers reachable by remote Ice clients on the Internet. These clients and servers can be on their own local networks behind firewalls and NATs - you don't need to worry about translating addresses and ports as Glacier2 handles all this for you. + +# How to use this image + +## Start `glacier2` service + +Using a configuration file: + +```shell +docker run --detach --name glacier2router -p 4063:4063 -v /path/to/config:/etc/glacier2router.conf:ro zeroc/glacier2 +``` + +Using command line arguments: + +```shell +docker run --detach --name glacier2router -p 4063:4063 zeroc/glacier2 +``` + +Refer to the [Glacier2 documentation](https://docs.zeroc.com/ice/3.8/cpp/glacier2) for more information on how to configure Glacier2. diff --git a/docs/icegridnode/README.md b/docs/icegridnode/README.md new file mode 100644 index 0000000..e48d2c9 --- /dev/null +++ b/docs/icegridnode/README.md @@ -0,0 +1,47 @@ +# Quick reference + +- **Maintained by**: [ZeroC, Inc.](https://zeroc.com) + +- **Where to get help**: [Ice Discussions](https://github.com/zeroc-ice/ice/discussions) + +- **Where to file issues**: [GitHub Issues](https://github.com/zeroc-ice/ice-dockerfiles/issues) + +- **Supported architectures**: `amd64`, `arm64` (except for 3.6 which is `amd64` only) + +- **Source repository**: [GitHub](https://github.com/zeroc-ice/ice-dockerfiles) + +- **Available on**: + - [Docker Hub](https://hub.docker.com/r/zeroc/icegridnode): `docker pull zeroc/icegridnode` + - [GitHub Container Registry](https://github.com/orgs/zeroc-ice/packages): `docker pull ghcr.io/zeroc-ice/icegridnode` + +# Supported tags and respective `Dockerfile` links + +- [`latest`, `3.8`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.8/icegridnode/Dockerfile) +- [`3.7`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.7/icegridnode/Dockerfile) +- [`3.6`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.6/icegridnode/Dockerfile) + +# What is IceGrid? + +[IceGrid](https://zeroc.com/products/ice/services/icegrid) is a location and activation service for [Ice](https://zeroc.com) applications. + +# How to use this image + +## Start `icegridnode` service + +Using a configuration file: + +```shell +docker run --detach --name some-icegridnode -v data:/var/lib/ice/icegrid -v /path/to/config/:/etc/icegridnode.conf:ro zeroc/icegridnode +``` + +Using command line arguments: + +```shell +docker run --detach --name some-icegridnode zeroc/icegridnode -v data:/var/lib/ice/icegrid --IceGrid.Node.Name=MyNode --Ice.Default.Locator="IceGrid/Locator:tcp -h icegridregistry -p 4061" +``` + +Refer to the [IceGrid documentation](https://docs.zeroc.com/ice/3.8/cpp/icegrid) for more information on how to configure an IceGrid Node. + +# Data volume + +The IceGrid Node container stores its data in a Docker volume mounted at `/var/lib/ice/icegrid`. diff --git a/docs/icegridregistry/README.md b/docs/icegridregistry/README.md new file mode 100644 index 0000000..da0c8bd --- /dev/null +++ b/docs/icegridregistry/README.md @@ -0,0 +1,47 @@ +# Quick reference + +- **Maintained by**: [ZeroC, Inc.](https://zeroc.com) + +- **Where to get help**: [Ice Discussions](https://github.com/zeroc-ice/ice/discussions) + +- **Where to file issues**: [GitHub Issues](https://github.com/zeroc-ice/ice-dockerfiles/issues) + +- **Supported architectures**: `amd64`, `arm64` (except for 3.6 which is `amd64` only) + +- **Source repository**: [GitHub](https://github.com/zeroc-ice/ice-dockerfiles) + +- **Available on**: + - [Docker Hub](https://hub.docker.com/r/zeroc/icegridregistry): `docker pull zeroc/icegridregistry` + - [GitHub Container Registry](https://github.com/orgs/zeroc-ice/packages): `docker pull ghcr.io/zeroc-ice/icegridregistry` + +# Supported tags and respective `Dockerfile` links + +- [`latest`, `3.8`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.8/icegridregistry/Dockerfile) +- [`3.7`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.7/icegridregistry/Dockerfile) +- [`3.6`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.6/icegridregistry/Dockerfile) + +# What is IceGrid? + +[IceGrid](https://zeroc.com/products/ice/services/icegrid) is a location and activation service for [Ice](https://zeroc.com) applications. + +# How to use run image + +## Start `icegridregistry` service + +Using a configuration file: + +```shell +docker run --detach --name some-icegridregistry -v data:/var/lib/ice/icegrid -v /path/to/config/:/etc/icegridregistry.conf:ro zeroc/icegridregistry +``` + +Using command line arguments: + +```shell +docker run --detach --name some-icegridregistry -p 4061:4061 -v data:/var/lib/ice/icegrid zeroc/icegridregistry --IceGrid.Registry.Name=MyRegistry +``` + +Refer to the [IceGrid documentation](https://docs.zeroc.com/ice/3.8/cpp/icegrid) for more information on how to configure an IceGrid Registry. + +# Data volume + +The IceGrid Registry container stores its data in a Docker volume mounted at `/var/lib/ice/icegrid`. diff --git a/docs/icestorm/README.md b/docs/icestorm/README.md new file mode 100644 index 0000000..8c0d733 --- /dev/null +++ b/docs/icestorm/README.md @@ -0,0 +1,47 @@ +# Quick reference + +- **Maintained by**: [ZeroC, Inc.](https://zeroc.com) + +- **Where to get help**: [Ice Discussions](https://github.com/zeroc-ice/ice/discussions) + +- **Where to file issues**: [GitHub Issues](https://github.com/zeroc-ice/ice-dockerfiles/issues) + +- **Supported architectures**: `amd64`, `arm64` (except for 3.6 which is `amd64` only) + +- **Source repository**: [GitHub](https://github.com/zeroc-ice/ice-dockerfiles) + +- **Available on**: + - [Docker Hub](https://hub.docker.com/r/zeroc/icestorm): `docker pull zeroc/icestorm` + - [GitHub Container Registry](https://github.com/orgs/zeroc-ice/packages): `docker pull ghcr.io/zeroc-ice/icestorm` + +# Supported tags and respective `Dockerfile` links + +- [`latest`, `3.8`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.8/icestorm/Dockerfile) +- [`3.7`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.7/icestorm/Dockerfile) +- [`3.6`](https://github.com/zeroc-ice/ice-dockerfiles/blob/main/3.6/icestorm/Dockerfile) + +# What is IceStorm? + +[IceStorm](https://zeroc.com/products/ice/services/icestorm) is a publish-subscribe event distribution service that helps you create push applications using the [Ice](https://zeroc.com) RPC framework. + +# How to use this image + +## Start `icestorm` service + +From a configuration file: + +```shell +docker run --detach --name some-icestorm -v /path/to/config:/etc/icestorm.conf:ro zeroc/icestorm +``` + +From command line arguments: + +```shell +docker run --detach --name some-icestorm zeroc/icestorm --IceStorm.TopicManager.Endpoints="tcp -h 0.0.0.0 -p 9999" --IceStorm.Publish.Endpoints="tcp -h 0.0.0.0 -p 10000" +``` + +Refer to the [IceStorm documentation](https://docs.zeroc.com/ice/3.8/cpp/icestorm) for more information on how to configure IceStorm. + +# Data volume + +The IceStorm container stores its data in a Docker volume mounted at `/data`.