Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install jobber inside non-alpine docker #308

Open
nikoshkus opened this issue Aug 21, 2020 · 3 comments
Open

Install jobber inside non-alpine docker #308

nikoshkus opened this issue Aug 21, 2020 · 3 comments
Assignees
Labels

Comments

@nikoshkus
Copy link

Hello,
I've tried to install jobber binary inside docker with :
FROM php:7.4.0-apache
RUN wget -q https://github.com/dshearer/jobber/releases/download/v1.4.4/jobber_1.4.4-1_amd64.deb && /usr/bin/dpkg -i jobber_1.4.4-1_amd64.deb
and got this:
Unpacking jobber (1.4.4-1) ...
Setting up jobber (1.4.4-1) ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.

If I try to init jobber inside docker:
Jobber doesn't seem to be running for user root.
(No socket at /var/jobber/0/cmd.sock.): stat /var/jobber/0/cmd.sock: no such file or directory

How does it can be resolved?

@dshearer dshearer self-assigned this Aug 23, 2020
@dshearer
Copy link
Owner

This is a bit tricky. Jobber needs to run several daemons, and that is not really possible in Docker. How are you trying to use Jobber in this image?

@ckotte
Copy link

ckotte commented Sep 14, 2020

This should work also with other distributions:

Dockerfile

FROM alpine:3.12
MAINTAINER Christian Kotte

# build parameters
ARG JOBBER_VERSION=1.4.4
# Image Build Date By Buildsystem
ARG BUILD_DATE=undefined

RUN export JOBBER_HOME=/tmp/jobber && \
    export JOBBER_LIB=$JOBBER_HOME/lib && \
    export GOPATH=/tmp && \
    export CONTAINER_UID=1000 && \
    export CONTAINER_GID=1000 && \
    export CONTAINER_USER=jobber && \
    export CONTAINER_GROUP=jobber && \
    # Add user
    addgroup -g $CONTAINER_GID $CONTAINER_USER && \
    adduser -u $CONTAINER_UID -G $CONTAINER_GROUP -s /bin/bash -S $CONTAINER_USER && \
    # Install tools
    apk add --update --no-cache \
      go \
      git \
      curl \
      wget \
      bash \
      su-exec \
      gzip \
      tar \
      tini \
      tzdata \
      make \
      musl-dev \
      rsync \
      grep \
      python3 \
      jq \
      msmtp \
      ca-certificates && \
    # Create sendmail symlink
    ln -sf /usr/bin/msmtp /usr/sbin/sendmail && \
    # Compile and install Jobber
    mkdir -p "/usr/local/var/jobber/${CONTAINER_UID}" && chown -R $CONTAINER_UID:$CONTAINER_GID "/usr/local/var/jobber/${CONTAINER_UID}" && \
    mkdir -p "/usr/local/var/jobber/0" && \
    cd /tmp && \
    mkdir -p src/github.com/dshearer && \
    cd src/github.com/dshearer && \
    git clone https://github.com/dshearer/jobber.git && \
    cd jobber && \
    git checkout v${JOBBER_VERSION} && \
    make check && \
    make install && \
    # Clean caches and tmps
    rm -rf /var/cache/apk/*                         &&  \
    rm -rf /tmp/*                                   &&  \
    rm -rf /var/log/*

# Image Metadata
LABEL com.opencontainers.application.jobber.version=$JOBBER_VERSION \
      com.opencontainers.image.builddate.jobber=${BUILD_DATE}

COPY send_email.sh /usr/local/bin/send_email.sh

COPY docker-entrypoint.sh /opt/jobber/docker-entrypoint.sh
ENTRYPOINT ["/sbin/tini","--","/opt/jobber/docker-entrypoint.sh"]
CMD ["jobberd"]

docker-entrypoint.sh

#!/bin/bash

set -o errexit

if [ "$EUID" -eq 0 ]; then
  configfile="/root/.jobber"
else
  configfile="/home/$(whoami)/.jobber"
fi

[...]

if [ "$1" = 'jobberd' ]; then
  exec /usr/local/libexec/jobberrunner -u /usr/local/var/jobber/${EUID}/cmd.sock ${configfile}
fi

exec "$@"

@mandano
Copy link

mandano commented Apr 4, 2021

this worked for me on ubuntu 20.04

dockerfile

FROM ubuntu:focal
RUN apt update
RUN apt install wget -y

RUN cd /tmp/
RUN wget https://github.com/dshearer/jobber/releases/download/v1.4.4/jobber_1.4.4-1_amd64.deb
RUN dpkg -i jobber_1.4.4-1_amd64.deb

ENV USERID 1000
RUN useradd jobberuser -m -s /bin/bash --user-group --uid ${USERID} && \
    mkdir -p "/var/jobber/${USERID}" && \
    chown -R jobberuser:jobberuser "/var/jobber/${USERID}"

COPY --chown=jobberuser:jobberuser jobfile /home/jobberuser/.jobber
RUN chmod 0600 /home/jobberuser/.jobber

USER jobberuser

docker-compose file:

update_db:
    container_name: update_db
    build: docker/update_db
    working_dir: /usr/src/app
    volumes:
    - .:/usr/src/app
    command: /usr/lib/x86_64-linux-gnu/jobberrunner -u /var/jobber/1000/cmd.sock /home/jobberuser/.jobber

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants