custom run launcher for custom docker image

This commit is contained in:
2025-08-02 21:06:42 +02:00
parent b1d115fe80
commit 94dcdd04a7
9 changed files with 36 additions and 4 deletions

View File

@@ -13,7 +13,7 @@ RUN uv pip install polars-lts-cpu --system
ARG APP ARG APP
ENV APP=$APP ENV APP=$APP
ENV PYTHONPATH=/apps/$APP/src/:/shared/src/ ENV PYTHONPATH=/apps/$APP/src/:/shared/src/:$PYTHONPATH
WORKDIR /opt/dagster/home WORKDIR /opt/dagster/home
# Run dagster gRPC server on port 4000 # Run dagster gRPC server on port 4000

View File

@@ -18,7 +18,7 @@ RUN . /venv/bin/activate && \
ARG APP ARG APP
ENV APP=$APP ENV APP=$APP
ENV PYTHONPATH=/apps/$APP/src/:/shared/src/ ENV PYTHONPATH=/apps/$APP/src/:/shared/src/:$PYTHONPATH
WORKDIR /opt/dagster/home WORKDIR /opt/dagster/home
# Run dagster gRPC server on port 4000 # Run dagster gRPC server on port 4000

View File

@@ -33,4 +33,6 @@ EOF
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]
ENV PYTHONPATH=/system:$PYTHONPATH
WORKDIR $DAGSTER_HOME WORKDIR $DAGSTER_HOME

View File

@@ -105,3 +105,15 @@ def raw_html(context: dg.AssetExecutionContext) -> Iterator[dg.Output[str]]:
partitions_def=daily_partitions_def, partitions_def=daily_partitions_def,
) )
def daily_html() -> str: ... def daily_html() -> str: ...
class MyAssetConfig(dg.Config):
image: str = "bla"
@asset(metadata={"docker_image": "my-other-image:latest"})
def my_asset(context: dg.AssetExecutionContext, config: MyAssetConfig) -> None:
ic(context.op_config)
ic(config)
# image = context.op_config.image
# context.log.info(f"This asset wants to use Docker image: {image}")

View File

@@ -1,4 +1,5 @@
import assets import assets
import jobs
import sensors import sensors
from dagster_polars import PolarsParquetIOManager from dagster_polars import PolarsParquetIOManager
from icecream import install from icecream import install
@@ -21,5 +22,6 @@ definitions = dg.Definitions(
"html_io_manager": HtmlIOManager(base_dir=STORAGE_DIR), "html_io_manager": HtmlIOManager(base_dir=STORAGE_DIR),
"polars_parquet_io_manager": PolarsParquetIOManager(base_dir=STORAGE_DIR), "polars_parquet_io_manager": PolarsParquetIOManager(base_dir=STORAGE_DIR),
}, },
jobs=[jobs.test_job],
sensors=[sensors.check_update], sensors=[sensors.check_update],
) )

View File

@@ -3,3 +3,9 @@ import assets
import dagster as dg import dagster as dg
raw_html_job = dg.define_asset_job("deals_job", selection=[assets.raw_html.key]) raw_html_job = dg.define_asset_job("deals_job", selection=[assets.raw_html.key])
test_job = dg.define_asset_job(
"my_asset_job",
selection=[assets.my_asset.key],
tags={"docker/image": "my.registry/image:from-config"},
)

View File

@@ -59,6 +59,15 @@ services:
networks: networks:
- dagster - dagster
dagster-code-stocks-playwright:
build:
context: apps/stocks
dockerfile: ../../Dockerfile.code.playwright
args:
- APP=stocks
image: dagster-code-stocks-playwright
profiles: [ "never" ]
dagster-code-tesla: dagster-code-tesla:
build: build:
context: apps/tesla context: apps/tesla

View File

@@ -25,6 +25,7 @@ x-volumes: &volumes
volumes: volumes:
- /opt/dagster/dagster.yaml:/opt/dagster/home/dagster.yaml.template:ro - /opt/dagster/dagster.yaml:/opt/dagster/home/dagster.yaml.template:ro
- /opt/dagster/workspace.yaml:/opt/dagster/home/workspace.yaml:ro - /opt/dagster/workspace.yaml:/opt/dagster/home/workspace.yaml:ro
- /opt/dagster/system/:/system/:ro
- /opt/dagster/storage/:/storage/:rw - /opt/dagster/storage/:/storage/:rw
- /opt/dagster/logs/:/logs:rw - /opt/dagster/logs/:/logs:rw
- /var/run/docker.sock:/var/run/docker.sock:rw - /var/run/docker.sock:/var/run/docker.sock:rw

View File

@@ -11,8 +11,8 @@ run_coordinator:
class: QueuedRunCoordinator class: QueuedRunCoordinator
run_launcher: run_launcher:
module: dagster_docker module: run_launcher
class: DockerRunLauncher class: CustomDockerRunLauncher
config: config:
env_vars: env_vars:
- DAGSTER_POSTGRES_HOST - DAGSTER_POSTGRES_HOST