构建镜像

准备文件

dagu和benthos下载地址(根据版本自行修改)
dagu: https://github.com/dagu-dev/dagu/releases/download/v1.12.11/dagu_1.12.11_linux_amd64.tar.gz
benthos: https://github.com/benthosdev/benthos/releases/download/v4.27.0/benthos_4.27.0_linux_amd64.tar.gz

上传文件到服务器的任意目录

我用$HOME/daguDocker目录

解压并将可执行程序放到指定的目录

tar -xf dagu_1.12.11_linux_amd64.tar.gz
tar -xf benthos_4.27.0_linux_amd64.tar.gz
mv dagu $HOME/daguDocker/
mv benthos $HOME/daguDocker/

创建Dockerfile

FROM debian:12-slim

ENV TZ=Asia/Shanghai
ENV LANG=C.utf8

ENV DAGU_BASICAUTH_USERNAME="admin"
ENV DAGU_BASICAUTH_PASSWORD="admin"
ENV DAGU_AUTHTOKEN="daguApiToken"

ENV BENTHOS_HOME=/opt/etlDir/benthos
ENV DAGU_HOME=/opt/etlDir/dagu
ENV DAGU_HOST=0.0.0.0
ENV DAGU_PORT=8080
ENV DAGU_IS_BASICAUTH=1
ENV DAGU_IS_AUTHTOKEN=1
ENV DAGU_NAVBAR_COLOR="#a0aeba"
ENV DAGU_NAVBAR_TITLE="Dagu"

RUN set -eux; \
        mkdir -p ${DAGU_HOME}; \
        mkdir -p ${BENTHOS_HOME}; \
        apt-get update; \
        apt-get install -y --no-install-recommends ca-certificates; \
        rm -rf /var/lib/apt/lists/*

VOLUME ${DAGU_HOME}/dags ${DAGU_HOME}/data ${DAGU_HOME}/logs ${BENTHOS_HOME}

COPY dagu /usr/local/bin/
COPY benthos /usr/local/bin/

ENTRYPOINT ["dagu"]

EXPOSE 8080
CMD ["start-all"]

构建镜像

docker build -t ctrimages.iisp.net/eusp/dagu:1.12.11 .

运行

在docker上测试运行

docker run --rm -it --privileged=true --name=dagu \
           -p 8088:8080 \
           -v /tmp/etlDir/benthos:/opt/etlDir/benthos \
           -v /tmp/etlDir/dagu/dags:/opt/etlDir/dagu/dags \
           -v /tmp/etlDir/dagu/data:/opt/etlDir/dagu/data \
           -v /tmp/etlDir/dagu/logs:/opt/etlDir/dagu/logs \
           ctrimages.iisp.net/eusp/dagu:1.12.11

注意:生产环境运行的时候应该是后台运行,且不应该把数据卷放在临时目录

使用浏览器访问dagu,需要注意防火墙开放端口

http://192.168.10.216:8088

用户名和密码在Dockerfile中由环境变量指定了

ENV DAGU_BASICAUTH_USERNAME="admin"
ENV DAGU_BASICAUTH_PASSWORD="admin"

在Rancher平台运行

定义dagu.yaml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: dagu12-pvc
  namespace: eusp-product
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  storageClassName: nfs-client-storageclass
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dagu12-server
  namespace: eusp-product
spec:
  selector:
    matchLabels:
      app: dagu12-server
  template:
    metadata:
      labels:
        app: dagu12-server
    spec:
      containers:
        - name: dagu12-server
          image: ctrimages.iisp.net/eusp/dagu:1.12.11
          imagePullPolicy: Always
          env:
            - name: DAGU_BASICAUTH_PASSWORD
              value: HzjcDagu.com!2
          ports:
            - containerPort: 8080
              name: dagu
              protocol: TCP
          volumeMounts:
            - mountPath: /opt/etlDir/benthos
              name: dagu12-vm
              subPath: benthos
            - mountPath: /opt/etlDir/dagu/dags
              name: dagu12-vm
              subPath: dags
            - mountPath: /opt/etlDir/dagu/data
              name: dagu12-vm
              subPath: data
            - mountPath: /opt/etlDir/dagu/logs
              name: dagu12-vm
              subPath: logs
      volumes:
        - name: dagu12-vm
          persistentVolumeClaim:
            claimName: dagu12-pvc
      imagePullSecrets:
        - name: harbor-secret
---
apiVersion: v1
kind: Service
metadata:
  name: dagu12-server-nodeport
  namespace: eusp-product
spec:
  ports:
    - name: dagu
      nodePort: 31622
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: dagu12-server
  type: NodePort

运行

kubectl apply -f dagu.yaml

通过调度到的work节点暴漏的31622端口访问dagu

http://192.168.10.216:31622

注意:登录密码在yaml中通过环境变量DAGU_BASICAUTH_PASSWORD指定为HzjcDagu.com!2

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐