最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Docker快速搭建Airflow+MySQL詳細(xì)步驟

 更新時(shí)間:2024年09月24日 15:00:47   作者:worxfr  
本文詳細(xì)介紹了如何使用Docker和Docker Compose安裝并配置Apache Airflow 2.9.3,步驟包括創(chuàng)建項(xiàng)目目錄、編寫docker-compose.yml文件、創(chuàng)建所需目錄結(jié)構(gòu)、啟動(dòng)和管理Docker容器,以及如何訪問(wèn)和配置Airflow Web UI,感興趣的朋友跟隨小編一起看看吧

為了使用 Docker 安裝 Apache Airflow 2.9.3 并配置 MySQL 數(shù)據(jù)庫(kù)并確保數(shù)據(jù)持久化,我們可以使用 Docker Compose。以下是詳細(xì)步驟:

步驟 1:創(chuàng)建項(xiàng)目目錄

在你的工作目錄中創(chuàng)建一個(gè)新目錄來(lái)存放所有相關(guān)的配置文件和腳本。

mkdir airflow-mysql
cd airflow-mysql

步驟 2:創(chuàng)建 docker-compose.yml 文件

在項(xiàng)目目錄中創(chuàng)建一個(gè)名為 docker-compose.yml 的文件,內(nèi)容如下:

version: '3.7'
services:
  mysql:
    image: mysql:8.0.27
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: airflow
      MYSQL_USER: airflow
      MYSQL_PASSWORD: airflowpassword
      MYSQL_CHARSET: utf8mb4
      MYSQL_COLLATION: utf8mb4_general_ci
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
  airflow-webserver:
    image: apache/airflow:2.9.3
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: mysql+mysqldb://airflow:airflowpassword@mysql:3306/airflow
      AIRFLOW__CORE__FERNET_KEY: 'YOUR_FERNET_KEY'
      AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
      AIRFLOW__WEBSERVER__RBAC: 'true'
    depends_on:
      - mysql
    ports:
      - "8080:8080"
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    command: ["bash", "-c", "airflow db init && airflow users create -r Admin -u admin -p admin -e admin@example.com -f Admin -l User && airflow webserver"]
  airflow-scheduler:
    image: apache/airflow:2.9.3
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: mysql+mysqldb://airflow:airflowpassword@mysql:3306/airflow
      AIRFLOW__CORE__FERNET_KEY: 'YOUR_FERNET_KEY'
      AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
      AIRFLOW__WEBSERVER__RBAC: 'true'
    depends_on:
      - mysql
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    command: ["bash", "-c", "airflow scheduler"]
volumes:
  mysql_data:

請(qǐng)注意,YOUR_FERNET_KEY 需要替換為一個(gè)實(shí)際的 Fernet 密鑰,可以通過(guò)以下命令生成:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

步驟 3:創(chuàng)建目錄結(jié)構(gòu)

為 Airflow 的 DAGs、日志和插件創(chuàng)建目錄:

mkdir -p dags logs plugins
chmod -R 777 dags logs plugins

步驟 4:?jiǎn)?dòng) Docker Compose

在項(xiàng)目目錄中運(yùn)行以下命令來(lái)啟動(dòng)所有服務(wù):

docker-compose up -d

步驟 5:檢查服務(wù)狀態(tài)

你可以使用以下命令查看正在運(yùn)行的容器:

docker-compose ps

步驟 6:訪問(wèn) Airflow Web UI

打開(kāi)瀏覽器并訪問(wèn) http://localhost:8080,你應(yīng)該能夠看到 Airflow 的登錄頁(yè)面。使用以下默認(rèn)憑據(jù)登錄:

  • 用戶名:admin
  • 密碼:admin

解釋

服務(wù)定義

  • mysql: 使用 MySQL 8.0.27 鏡像,設(shè)置數(shù)據(jù)庫(kù)名稱、用戶和密碼,并將數(shù)據(jù)持久化到 mysql_data 卷中。
  • airflow-webserver: 使用 Airflow 2.9.3 鏡像,配置連接 MySQL 的連接字符串,初始化數(shù)據(jù)庫(kù)并創(chuàng)建管理員用戶,然后啟動(dòng) Airflow Webserver。
  • airflow-scheduler: 使用 Airflow 2.9.3 鏡像,配置連接 MySQL 的連接字符串,并啟動(dòng) Airflow Scheduler。

數(shù)據(jù)持久化

  • MySQL 數(shù)據(jù)通過(guò) Docker 卷 mysql_data 持久化。
  • Airflow 的 DAGs、日志和插件通過(guò)綁定掛載到主機(jī)的目錄 ./dags、./logs./plugins

其他配置

環(huán)境變量說(shuō)明

  • AIRFLOW__CORE__EXECUTOR: LocalExecutor 表示使用本地執(zhí)行器。
  • AIRFLOW__CORE__SQL_ALCHEMY_CONN: 設(shè)置 Airflow 連接 MySQL 的連接字符串。格式為 mysql+mysqldb://<username>:<password>@<host>:<port>/<database>。
  • AIRFLOW__CORE__FERNET_KEY: 用于加密連接密碼的密鑰??梢酝ㄟ^(guò) python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" 生成這個(gè)密鑰。
  • AIRFLOW__CORE__LOAD_EXAMPLES: 設(shè)置為 false 表示不加載示例 DAGs,以保持環(huán)境干凈。
  • AIRFLOW__WEBSERVER__RBAC: 啟用基于角色的訪問(wèn)控制。

Docker Compose 配置說(shuō)明

  • depends_on: 確保 MySQL 服務(wù)在 Airflow 服務(wù)之前啟動(dòng)。
  • volumes: 用于持久化數(shù)據(jù)和共享文件。MySQL 數(shù)據(jù)存儲(chǔ)在 mysql_data 卷中;Airflow 的 DAGs、日志和插件分別綁定掛載到主機(jī)的 ./dags./logs./plugins 目錄。
  • command: 定義容器啟動(dòng)時(shí)要運(yùn)行的命令。對(duì)于 airflow-webserver 服務(wù),首先初始化數(shù)據(jù)庫(kù)并創(chuàng)建管理員用戶,然后啟動(dòng) Airflow Webserver。對(duì)于 airflow-scheduler 服務(wù),啟動(dòng) Airflow Scheduler。

確保持久化

持久化數(shù)據(jù)是確保服務(wù)重啟后數(shù)據(jù)不會(huì)丟失的關(guān)鍵。我們使用 Docker 卷來(lái)持久化 MySQL 數(shù)據(jù),并使用綁定掛載來(lái)持久化 Airflow 的 DAGs、日志和插件。

啟動(dòng)和管理容器

啟動(dòng)容器

docker-compose up -d

查看容器狀態(tài)

docker-compose ps

查看日志

docker-compose logs -f

停止和刪除容器

docker-compose down

進(jìn)一步配置和優(yōu)化

安全性

更改默認(rèn)密碼
默認(rèn)的管理員密碼為 admin,建議在第一次登錄后立即更改密碼。

使用環(huán)境變量保護(hù)敏感信息
避免將敏感信息直接寫入 docker-compose.yml 文件,可以使用 Docker Secrets 或環(huán)境變量來(lái)保護(hù)敏感信息。

資源限制

根據(jù)你的硬件資源,可以在 docker-compose.yml 中為容器設(shè)置資源限制:

airflow-webserver:
  ...
  deploy:
    resources:
      limits:
        cpus: '0.50'
        memory: '512M'
  ...

日志管理

確保日志文件不會(huì)無(wú)限制地增長(zhǎng),可以在 docker-compose.yml 中配置日志選項(xiàng):

airflow-webserver:
  ...
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "3"
  ...

備份和恢復(fù)

定期備份 MySQL 數(shù)據(jù)庫(kù)和 Airflow 配置,以防止數(shù)據(jù)丟失。你可以使用 cron jobs 或其他備份工具來(lái)實(shí)現(xiàn)這一點(diǎn)。

擴(kuò)展性

如果需要擴(kuò)展到多個(gè)節(jié)點(diǎn),可以考慮使用 CeleryExecutor 或 KubernetesExecutor。CeleryExecutor 需要額外的配置和 Redis/RabbitMQ 作為消息隊(duì)列。

示例 DAG 創(chuàng)建

dags 目錄中創(chuàng)建一個(gè)簡(jiǎn)單的示例 DAG 文件,例如 example_dag.py

from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta
default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}
with DAG(
    'example_dag',
    default_args=default_args,
    description='A simple example DAG',
    schedule_interval=timedelta(days=1),
    start_date=datetime(2023, 1, 1),
    catchup=False,
) as dag:
    t1 = BashOperator(
        task_id='print_date',
        bash_command='date',
    )
    t2 = BashOperator(
        task_id='sleep',
        bash_command='sleep 5',
    )
    t1 >> t2

這將創(chuàng)建一個(gè)簡(jiǎn)單的 DAG,包含兩個(gè)任務(wù):打印當(dāng)前日期和等待 5 秒。

監(jiān)控和日志

Airflow 提供了豐富的監(jiān)控和日志功能,可以幫助你跟蹤任務(wù)的執(zhí)行狀態(tài)和性能。

Airflow Web UI
通過(guò) Web UI 查看 DAG 和任務(wù)的狀態(tài)、日志和圖形化表示。

日志文件
查看容器內(nèi)的日志文件,了解更多詳細(xì)信息。

docker-compose logs airflow-webserver
docker-compose logs airflow-scheduler

更新和升級(jí)

定期更新 Airflow 和相關(guān)依賴項(xiàng),以確保獲得最新的功能和安全補(bǔ)丁。

更新 Docker 鏡像

docker pull apache/airflow:2.9.3
docker-compose up -d

更新 MySQL 鏡像

docker pull mysql:8.0.27
docker-compose up -d

結(jié)論

通過(guò)這些步驟,你可以成功地使用 Docker 和 MySQL 部署和配置 Apache Airflow 2.9.3

驗(yàn)證 Docker 容器是否成功啟動(dòng),可以使用一系列命令來(lái)檢查容器的狀態(tài)和日志。以下是一些常用的命令和步驟:

1. 檢查容器狀態(tài)

使用 docker ps 命令查看正在運(yùn)行的容器:

docker ps

這個(gè)命令會(huì)列出所有正在運(yùn)行的容器,包括它們的容器 ID、名稱、狀態(tài)等。

如果要查看所有容器(包括停止的),可以使用 -a 選項(xiàng):

docker ps -a

2. 查看容器日志

查看特定容器的日志可以幫助你了解容器是否正常啟動(dòng),并排除潛在的錯(cuò)誤。使用 docker logs 命令:

docker logs <container_id_or_name>

你還可以使用 -f 選項(xiàng)來(lái)實(shí)時(shí)跟蹤日志輸出:

docker logs -f <container_id_or_name>

3. 使用 Docker Compose 驗(yàn)證

如果你使用的是 Docker Compose,可以使用以下命令查看所有服務(wù)的狀態(tài):

docker logs -f <container_id_or_name>

查看所有服務(wù)的日志:

docker-compose logs

實(shí)時(shí)查看日志:

docker-compose logs -f

4. 具體示例

假設(shè)你有一個(gè)名為 airflow-webserver 的容器,以下是如何驗(yàn)證它是否成功啟動(dòng)的步驟:

檢查容器狀態(tài)

docker ps

你應(yīng)該看到類似以下的輸出:

CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS         PORTS                    NAMES
abc123def456   apache/airflow:2.9.3    "/entrypoint.sh airf…"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp   airflow-webserver

如果容器狀態(tài)是 Up,表明容器正在運(yùn)行。

查看容器日志

docker logs airflow-webserver

你應(yīng)該看到 Airflow Webserver 的啟動(dòng)日志,確認(rèn)沒(méi)有錯(cuò)誤信息。

實(shí)時(shí)跟蹤日志

docker logs -f airflow-webserver

實(shí)時(shí)查看容器的輸出,確保沒(méi)有任何問(wèn)題。

使用 Docker Compose 驗(yàn)證

docker-compose ps

你應(yīng)該看到類似以下的輸出:

   Name                     Command               State                                  Ports
-----------------------------------------------------------------------------------------------------------
airflow-mysql_mysql_1      docker-entrypoint.sh mysqld      Up             3306/tcp
airflow-mysql_webserver_1  /entrypoint.sh airflow w ...     Up (healthy)   0.0.0.0:8080->8080/tcp
airflow-mysql_scheduler_1  /entrypoint.sh airflow s ...     Up

查看所有服務(wù)的日志

docker-compose logs

實(shí)時(shí)查看所有服務(wù)的日志

docker-compose logs -f

5. 健康檢查

一些 Docker 鏡像提供了健康檢查功能,可以通過(guò) docker ps 命令中的 STATUS 列查看健康狀態(tài)。如果鏡像支持健康檢查,你會(huì)看到類似 Up (healthy) 的狀態(tài)。

6. 訪問(wèn) Web UI

最終,你可以通過(guò)瀏覽器訪問(wèn)相應(yīng)的服務(wù) URL 以驗(yàn)證服務(wù)是否正常運(yùn)行。例如,對(duì)于 Airflow Webserver,你可以訪問(wèn) http://localhost:8080,如果能夠看到 Airflow 的登錄頁(yè)面,說(shuō)明 Webserver 已經(jīng)成功啟動(dòng)。

總結(jié)

通過(guò)這些命令和步驟,可以有效地驗(yàn)證 Docker 容器是否成功啟動(dòng),并通過(guò)查看日志和狀態(tài)排除潛在的錯(cuò)誤。

到此這篇關(guān)于使用Docker快速搭建Airflow+MySQL詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Docker 搭建Airflow MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker部署Open WebUI+Ollama完整教程(Windows/Linux通用)

    Docker部署Open WebUI+Ollama完整教程(Windows/Linux通用)

    在本地搭建專屬大模型平臺(tái),不用依賴云端服務(wù),既能實(shí)現(xiàn)可視化聊天交互,又能保證數(shù)據(jù)隱私——今天就給大家分享最省心的方案:用 Docker 一鍵部署 Open WebUI + Ollama,需要的朋友可以參考下
    2026-04-04
  • 使用Docker安裝detectron2的配置方法

    使用Docker安裝detectron2的配置方法

    Detectron2 是一個(gè)用于目標(biāo)檢測(cè)、分割和其他視覺(jué)識(shí)別任務(wù)的平臺(tái),下面采用 docker 方式在 windows 上安裝,對(duì)Docker安裝detectron2的配置方法感興趣的朋友一起看看吧
    2024-03-03
  • docker-compose統(tǒng)一管理多個(gè)容器使用詳解

    docker-compose統(tǒng)一管理多個(gè)容器使用詳解

    這篇文章主要為大家介紹了docker-compose統(tǒng)一管理多個(gè)容器使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 使用 Docker-compose 搭建lnmp的詳細(xì)過(guò)程

    使用 Docker-compose 搭建lnmp的詳細(xì)過(guò)程

    Docker-Compose項(xiàng)目是Docker官方的開(kāi)源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì)Docker容器集群的快速編排,這篇文章主要介紹了使用 Docker-compose 搭建lnmp,需要的朋友可以參考下
    2023-06-06
  • Dockerfile和docker-compose使用詳解

    Dockerfile和docker-compose使用詳解

    Dockerfile用于構(gòu)建鏡像,包含指令和說(shuō)明,使用FROM開(kāi)始構(gòu)建,WORKDIR設(shè)置工作目錄,RUN執(zhí)行命令,COPY拷貝文件,EXPOSE暴露端口,CMD指定容器啟動(dòng)命令,docker-compose用于管理多容器,通過(guò)docker-compose.yml配置,支持多服務(wù)實(shí)例,可設(shè)定服務(wù)依賴和環(huán)境變量,支持掛載卷
    2024-11-11
  • 本地Docker部署Navidrome音樂(lè)服務(wù)器與遠(yuǎn)程訪問(wèn)聽(tīng)歌詳細(xì)教程(圖文詳解)

    本地Docker部署Navidrome音樂(lè)服務(wù)器與遠(yuǎn)程訪問(wèn)聽(tīng)歌詳細(xì)教程(圖文詳解)

    本文和大家分享一款目前在G站有11K+Star的開(kāi)源跨平臺(tái)音樂(lè)服務(wù)器?Navidrome,如何在?Linux?環(huán)境本地使用?Docker?部署,并結(jié)合cpolar?內(nèi)網(wǎng)穿透工具配置公網(wǎng)地址,實(shí)現(xiàn)隨時(shí)隨地遠(yuǎn)程訪問(wèn)本地存儲(chǔ)音樂(lè)的詳細(xì)流程,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Docker的徹底刪除與重新安裝完整步驟(ubuntu22.04)

    Docker的徹底刪除與重新安裝完整步驟(ubuntu22.04)

    Docker是一種輕量級(jí)的容器化平臺(tái),可以幫助開(kāi)發(fā)人員將應(yīng)用程序及其依賴項(xiàng)打包成一個(gè)可移植的容器,這篇文章主要介紹了Docker的徹底刪除與重新安裝完整步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 在Ubuntu下通過(guò)Docker部署MySQL服務(wù)器的詳細(xì)步驟

    在Ubuntu下通過(guò)Docker部署MySQL服務(wù)器的詳細(xì)步驟

    Docker 是一個(gè)開(kāi)源的容器化平臺(tái),能夠讓開(kāi)發(fā)者將應(yīng)用程序及其依賴打包成一個(gè)輕量級(jí)的、可移植的容器,MySQL 是一個(gè)流行的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),本文給大家介紹了在Ubuntu下通過(guò)Docker部署MySQL服務(wù)器的詳細(xì)步驟,需要的朋友可以參考下
    2025-01-01
  • Docker部署RabbitMQ鏡像的保姆級(jí)教程

    Docker部署RabbitMQ鏡像的保姆級(jí)教程

    RabbitMQ?的鏡像隊(duì)列集群(Mirrored?Queues?Cluster)是實(shí)現(xiàn)高可用性的一種模式,它通過(guò)在集群中的多個(gè)節(jié)點(diǎn)之間復(fù)制隊(duì)列,確保消息在集群的某些節(jié)點(diǎn)宕機(jī)時(shí)不會(huì)丟失,本文介紹了Docker部署RabbitMQ鏡像的保姆級(jí)教程,需要的朋友可以參考下
    2024-12-12
  • docker-swarm之使用Docker secret管理敏感數(shù)據(jù)

    docker-swarm之使用Docker secret管理敏感數(shù)據(jù)

    就Docker Swarm集群服務(wù)而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書或其他不應(yīng)通過(guò)網(wǎng)絡(luò)傳輸或未加密存儲(chǔ)在Dockerfile或應(yīng)用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來(lái)就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)
    2023-08-08

最新評(píng)論

铜陵市| 滁州市| 施秉县| 常宁市| 察隅县| 双鸭山市| 乌苏市| 怀集县| 武宣县| 遂昌县| 固原市| 诸暨市| 甘洛县| 鄂托克旗| 武平县| 邹平县| 甘谷县| 静海县| 和林格尔县| 清河县| 威海市| 河池市| 庄浪县| 资中县| 南宫市| 林口县| 资溪县| 大邑县| 巴南区| 嵩明县| 基隆市| 社会| 根河市| 沙河市| 沿河| 涿鹿县| 淳化县| 习水县| 信宜市| 辉县市| 观塘区|