From 4024b6f889ee617af7a32551e566724b377129a4 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 16 Feb 2023 15:36:04 +0100 Subject: [PATCH 1/4] feat(dc): adding dc service script --- init.d/dc | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 init.d/dc diff --git a/init.d/dc b/init.d/dc new file mode 100644 index 0000000..f59911a --- /dev/null +++ b/init.d/dc @@ -0,0 +1,66 @@ +#!/sbin/openrc-run + +# From https://github.com/0x17de/dockerservice-openrc + +: ${SUBCFGDIR:=/srv/docker} +DOCKER_COMPOSE_UP_ARGS=${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-deps"} + +SUBSVC="${SVCNAME#*.}" +[ -z "${SUBSVC}" ] && exit 1 +: ${SUBCFG:="${SUBCFGDIR}/${SUBSVC}/docker-compose.yml"} +DOCOCMD="/usr/bin/docker" +export COMPOSE_HTTP_TIMEOUT=300 + +description="Manage Docker services defined in ${SUBCFG}" +extra_commands="configtest build" +description_configtest="Check configuration via \"docker compose -f ${SUBCFG} config\"" +description_build="Run \"docker compose -f ${SUBCFG} build\"" + +depend() { + need localmount net docker + use dns + after docker +} + +configtest() { + if ! [ -f "${SUBCFG}" ]; then + eerror "The config file ${SUBCFG} does not exist!" + return 1 + fi + "${DOCOCMD}" -f "${SUBCFG}" config >&/dev/null + if [ ${?} -ne 0 ]; then + einfo "config: ok" + else + eerror "config: error" + return 1 + fi +} + +build() { + configtest || return 1 + ebegin "Building dockerservice ${SUBSVC}" + "${DOCOCMD}" compose -f "${SUBCFG}" build + eend $? +} + +start() { + configtest || return 1 + ebegin "Starting dockerservice ${SUBSVC}" + "${DOCOCMD}" compose -f "${SUBCFG}" up -d ${DOCKER_COMPOSE_UP_ARGS} + eend $? +} + +stop() { + ebegin "Stopping dockerservice ${SUBSVC}" + "${DOCOCMD}" compose -f "${SUBCFG}" stop --timeout=300 + eend $? +} + +status() { + if [ "$("${DOCOCMD}" compose -f "${SUBCFG}" top | wc -l)" -gt "0" ]; then + einfo "status: started" + else + einfo "status: stopped" + return 3 + fi +} -- 2.17.1 From 5b35d10ad8392f4b339c6ee4f646bac2b2484541 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 16 Feb 2023 15:36:23 +0100 Subject: [PATCH 2/4] feat(service): adding jenkins slave service --- services/jslave/docker-compose.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 services/jslave/docker-compose.yml diff --git a/services/jslave/docker-compose.yml b/services/jslave/docker-compose.yml new file mode 100644 index 0000000..019f087 --- /dev/null +++ b/services/jslave/docker-compose.yml @@ -0,0 +1,9 @@ +version: "3.9" +services: + jslave: + env_file: + - /etc/jslave/jslave.conf + image: "reg.cadoles.com/cadoles/jenkins-slave:latest" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /srv/jenkins/workspace:/workspace -- 2.17.1 From 4e356c51fec9d2c81b34d470fa8d54c9d2a85bd9 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 16 Feb 2023 15:43:11 +0100 Subject: [PATCH 3/4] feat(pkg): adding nfpm packaging --- README.md | 13 +++++++++++++ nfpm.yaml | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 nfpm.yaml diff --git a/README.md b/README.md index e69de29..ab67126 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,13 @@ +# Alpine Docker compose service + +## Run docker-compose services as openrc services + +Copy the script init.d/dc to /etc/init.d/dc. + +Each docker-compose based service $SERVICENAME must exist like so: + * /srv/docker/$SERVICENAME/docker-compose.yml. + +Finally create some symbolic link : + * ln -s /etc/init.d/dockerservice.$SERVICENAME pointing to /etc/init.d/dc. + +Services can now be started/stopped via e.g. /etc/init.d/dockerservice.gitea start. diff --git a/nfpm.yaml b/nfpm.yaml new file mode 100644 index 0000000..efa65fd --- /dev/null +++ b/nfpm.yaml @@ -0,0 +1,33 @@ +# nfpm example config file +# +# check https://nfpm.goreleaser.com/configuration for detailed usage +# + +name: "dcservice" +arch: "amd64" +platform: "linux" +version: "v0.0.1" +section: "default" +priority: "extra" +maintainer: "Cadoles " +description: | + Docker Compose Openrc Services +vendor: "Cadoles" +homepage: "https://www.cadoles.com" +license: "GPL-v3" +changelog: "changelog.yaml" + +contents: +- src: init.d/dc + dst: /etc/init.d/dc +- src: services + dst: /srv/docker +- src: init.d/dc + dst: /etc/init.d/dc.jslave + type: symlink + +overrides: + apk: + depends: + - docker-compose + - docker -- 2.17.1 From a1eb7608ea4e63484a6a11732bc34d063444b903 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 16 Feb 2023 15:45:04 +0100 Subject: [PATCH 4/4] fix(doc): adding doc for packaging command --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index ab67126..84c4101 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,12 @@ Finally create some symbolic link : * ln -s /etc/init.d/dockerservice.$SERVICENAME pointing to /etc/init.d/dc. Services can now be started/stopped via e.g. /etc/init.d/dockerservice.gitea start. + +## Build an Alpine package + +You need to install "nfpm" (https://nfpm.goreleaser.com/) + +``` +nfpm pkg --packager apk --target . + +``` -- 2.17.1