docker-compose 使用 dolphinscheduler
#
#~/apache-dolphinscheduler-2.0.2-src/docker/docker-swarm
#
#
#
#
#
修改配置文件:docker-compose.yml 解读
version: "3.1"
services:
dolphinscheduler-postgresql:
image: bitnami/postgresql:11.11.0
environment:
TZ: Asia/Shanghai
POSTGRESQL_USERNAME: root
POSTGRESQL_PASSWORD: root
POSTGRESQL_DATABASE: dolphinscheduler
volumes:
- dolphinscheduler-postgresql:/bitnami/postgresql
restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-zookeeper:
image: bitnami/zookeeper:3.6.2
environment:
TZ: Asia/Shanghai
ALLOW_ANONYMOUS_LOGIN: "yes"
ZOO_4LW_COMMANDS_WHITELIST: srvr,ruok,wchs,cons
volumes:
- dolphinscheduler-zookeeper:/bitnami/zookeeper
restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-api:
image: apache/dolphinscheduler:2.0.2
command: api-server
ports:
- 12345:12345
environment:
TZ: Asia/Shanghai
env_file: config.env.sh
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "ApiApplicationServer"]
interval: 30s
timeout: 5s
retries: 3
depends_on:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
- dolphinscheduler-shared-local:/opt/soft
- dolphinscheduler-resource-local:/dolphinscheduler
restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-alert:
image: apache/dolphinscheduler:2.0.2
command: alert-server
environment:
TZ: Asia/Shanghai
env_file: config.env.sh
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "AlertServer"]
interval: 30s
timeout: 5s
retries: 3
depends_on:
- dolphinscheduler-postgresql
volumes:
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-master:
image: apache/dolphinscheduler:2.0.2
command: master-server
environment:
TZ: Asia/Shanghai
env_file: config.env.sh
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "MasterServer"]
interval: 30s
timeout: 5s
retries: 3
depends_on:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
- dolphinscheduler-shared-local:/opt/soft
restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-worker:
image: apache/dolphinscheduler:2.0.2
command: worker-server
environment:
TZ: Asia/Shanghai
env_file: config.env.sh
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "WorkerServer"]
interval: 30s
timeout: 5s
retries: 3
depends_on:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- dolphinscheduler-worker-data:/tmp/dolphinscheduler
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
- dolphinscheduler-shared-local:/opt/soft
- dolphinscheduler-resource-local:/dolphinscheduler
restart: unless-stopped
networks:
- dolphinscheduler
dolphinscheduler-worker2:
image: apache/dolphinscheduler:2.0.2
command: worker-server
environment:
TZ: Asia/Shanghai
env_file: config.env.sh
healthcheck:
test: ["CMD", "/root/checkpoint.sh", "WorkerServer"]
interval: 30s
timeout: 5s
retries: 3
depends_on:
- dolphinscheduler-postgresql
- dolphinscheduler-zookeeper
volumes:
- dolphinscheduler-worker-data:/tmp/dolphinscheduler
- dolphinscheduler-logs:/opt/dolphinscheduler/logs
- dolphinscheduler-shared-local:/opt/soft
- dolphinscheduler-resource-local:/dolphinscheduler
restart: unless-stopped
networks:
- dolphinscheduler
networks:
dolphinscheduler:
driver: bridge
volumes:
dolphinscheduler-postgresql:
dolphinscheduler-zookeeper:
dolphinscheduler-worker-data:
dolphinscheduler-logs:
dolphinscheduler-shared-local:
dolphinscheduler-resource-local:
构建生产环境中使用的
cd ~/soft
vim Dockerfile
FROM apache/dolphinscheduler:2.0.3
COPY mysql-connector-java-8.0.17.jar /opt/dolphinscheduler/lib
COPY source.list /tmp/source.list
CMD cat /tmp/source.list > /etc/apt/sources.list
RUN apt-get update && \
apt-get install -y --no-install-recommends ssh && \
apt-get install -y --no-install-recommends python3 && \
rm -rf /var/lib/apt/lists/*
docker build -t apache/dolphinscheduler:sql-driver .
将 docker-compose.yml 文件中的所有 image 字段修改为 apache/dolphinscheduler:mysql-driver
暂时的方法
FROM apache/dolphinscheduler:2.0.3
COPY mysql-connector-java-8.0.17.jar /opt/dolphinscheduler/lib
COPY source.list /tmp/source.list
COPY hosts /tmp/hosts
COPY resolv.conf /tmp/resolv.conf
CMD cat /tmp/hosts >> /etc/hosts
RUN cat /tmp/source.list >/etc/apt/sources.list && \
cat /tmp/resolv.conf >/etc/resolv.conf && \
cat /tmp/hosts >> /etc/hosts && \
apt-get update --allow-insecure-repositories && \
apt-get install -y --no-install-recommends python --allow-unauthenticated && \
apt-get install -y --no-install-recommends python-pip --allow-unauthenticated && \
rm -rf /var/lib/apt/lists/*
Dockerfile
/etc/hosts
/etc/apt/sources.list
/etc/resolv.conf
/etc/default/docker
/etc/docker/daemon.json
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
rm -rf /var/lib/apt/lists/*
“Repository does not have a release file”是因为添加的储存库不适用于当前Ubuntu版本
1.Docker容器修改 hosts
/etc/hosts, /etc/resolv.conf和/etc/hostname 容器中的这三个文件不存在于镜像,
而是存在于于/var/lib/docker/containers/,在启动容器的时候,通过mount的形式将这些文件挂载到容器内部。
因此,如果在容器中修改这些文件的话,修改部分不会存在于容器的top layer,而是直接写入这三个物理文件中。
2.为什么重启后修改内容不存在了?原因是:每次Docker在启动容器的时候,通过重新构建新的/etc/hosts文件,这又是为什么呢?
原因是:容器重启,IP地址为改变,hosts文件中原来的IP地址无效,因此理应修改hosts文件,否则会产生脏数据。
3.有没有什么好的解决方法?
可以通过docker run命令的–add-host参数来为容器添加host与ip的映射关系。
Dockerfile文件
COPY ADD
Dockerfile中的COPY指令和ADD指令都可以将主机上的资源复制或加入到容器镜像中,都是在构建镜像的过程中完成的。
COPY指令和ADD指令的唯一区别在于是否支持从远程URL获取资源。
COPY指令只能从执行docker build所在的主机上读取资源并复制到镜像中。
而ADD指令还支持通过URL从远程服务器读取资源并复制到镜像中
RUN CMD ENTRYPOINT
CMD 在docker run 时运行
CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效
ENV ARG
FROM
VOLUME EXPOSE WORKDIR USER LABEL
参考
Apache Dolphin Scheduler - Docker Compose 详解 https://www.cnblogs.com/aaronlinv/p/15309275.html
Modify hosts file in dockerfile https://serverfault.com/questions/777714/modify-hosts-file-in-dockerfile
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库