Andrew Brown
03/11/2021, 5:36 PM.env
file, which is loaded by docker-compose.yml
. I have also verified the $DAGSTER_CURRENT_IMAGE env var is set in the pipelines container by shelling into it while it's running.
Here are the running containers output by `docker ps`:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9360afd792f3 dagster-data-orchestration_dagster_daemon "dagster-daemon run" 18 hours ago Up 18 hours dagster_daemon
606fbbba144c dagster-data-orchestration_dagster_dagit "dagit -h 0.0.0.0 -p…" 18 hours ago Up 18 hours 0.0.0.0:3000->3000/tcp dagster_dagit
85b25377d7c3 postgres:11 "docker-entrypoint.s…" 18 hours ago Up 18 hours 0.0.0.0:5432->5432/tcp dagster_postgresql
51c5d0f47b5b dagster-data-orchestration_dagster_pipelines "dagster api grpc -h…" 18 hours ago Up 18 hours 0.0.0.0:4000->4000/tcp dagster_pipelines
And here is the value of $DAGSTER_CURRENT_IMAGE in dagster-data-orchestration_dagster_pipelines
's running container (retrieved via bash in running container docker exec -it 51c5d0f47b5b /bin/sh
) :
# echo $DAGSTER_CURRENT_IMAGE
dagster-data-orchestration_dagster_pipelines
Andrew Brown
03/11/2021, 5:37 PMversion: "3.7"
services:
# This service runs the postgres DB used by dagster for run storage, schedule storage,
# and event log storage.
dagster_postgresql:
image: postgres:11
container_name: dagster_postgresql
ports:
- "5432:5432"
environment:
POSTGRES_USER: "postgres_user"
POSTGRES_PASSWORD: "postgres_password"
POSTGRES_DB: "postgres_db"
networks:
- dagster_network
# This service runs the gRPC server that loads and executes your pipelines, in both dagit
# and dagster-daemon. By setting DAGSTER_CURRENT_IMAGE to its own image, we tell the
# run launcher to use this same image when launching runs in a new container as well.
# Multiple containers like this can be deployed separately - each just needs to run on
# its own port, and have its own entry in the workspace.yaml file that's loaded by dagit.
dagster_pipelines:
build:
context: .
dockerfile: ./Dockerfile_pipelines
container_name: dagster_pipelines
ports:
- "4000:4000"
env_file:
- .env
environment:
DAGSTER_POSTGRES_USER: "postgres_user"
DAGSTER_POSTGRES_PASSWORD: "postgres_password"
DAGSTER_POSTGRES_DB: "postgres_db"
DAGSTER_CURRENT_IMAGE: "${COMPOSE_PROJECT_NAME}_dagster_pipelines"
networks:
- dagster_network
# This service runs dagit, which loads the pipelines from the user code container.
# Since our instance uses the QueuedRunCoordinator, any runs submitted from dagit will be put on
# a queue and later dequeued and launched by dagster-daemon.
dagster_dagit:
build:
context: .
dockerfile: ./Dockerfile_dagster
entrypoint:
- dagit
- -h
- "0.0.0.0"
- -p
- "3000"
- -w
- workspace.yaml
container_name: dagster_dagit
expose:
- "3000"
ports:
- "3000:3000"
env_file:
- .env
environment:
DAGSTER_POSTGRES_USER: "postgres_user"
DAGSTER_POSTGRES_PASSWORD: "postgres_password"
DAGSTER_POSTGRES_DB: "postgres_db"
networks:
- dagster_network
depends_on:
- dagster_postgresql
- dagster_pipelines
# This service runs the dagster-daemon process, which is responsible for taking runs
# off of the queue and launching them, as well as creating runs from schedules or sensors.
dagster_daemon:
build:
context: .
dockerfile: ./Dockerfile_dagster
entrypoint:
- dagster-daemon
- run
container_name: dagster_daemon
env_file:
- .env
environment:
DAGSTER_POSTGRES_USER: "postgres_user"
DAGSTER_POSTGRES_PASSWORD: "postgres_password"
DAGSTER_POSTGRES_DB: "postgres_db"
volumes: # Make docker client accessible so we can launch containers using host docker
- /var/run/docker.sock:/var/run/docker.sock
networks:
- dagster_network
depends_on:
- dagster_postgresql
- dagster_pipelines
networks:
dagster_network:
driver: bridge
name: dagster_network
Andrew Brown
03/11/2021, 5:39 PMdaniel
03/11/2021, 6:04 PMAndrew Brown
03/11/2021, 6:09 PMload_from:
- python_file:
relative_path: workspaces/canonical/canonical_repo.py
- python_file:
relative_path: workspaces/salesforce/salesforce_repo.py
Andrew Brown
03/11/2021, 6:10 PMdaniel
03/11/2021, 6:13 PMAndrew Brown
03/11/2021, 6:19 PMsalesforce
and canonical
w/ corresponding Dockerfile, right?Andrew Brown
03/11/2021, 6:19 PMdaniel
03/11/2021, 6:20 PMdaniel
03/11/2021, 6:20 PMAndrew Brown
03/11/2021, 6:20 PMAndrew Brown
03/11/2021, 8:24 PMdaniel
03/11/2021, 8:44 PMdaniel
03/11/2021, 8:44 PMAndrew Brown
03/11/2021, 9:27 PMKieron Ellis
06/14/2021, 5:06 PMException: No docker image specified by the instance config or repository
). Any help would be appreciated.
docker-compose.yml
version: "3.7"
services:
docker_example_postgresql:
image: postgres:11
container_name: docker_postgresql
environment:
DAGSTER_POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
DAGSTER_POSTGRES_DB: "${POSTGRES_DB}"
DAGSTER_POSTGRES_HOSTNAME: "${POSTGRES_HOSTNAME}"
networks:
- docker_example_network
docker_example_pipelines:
build:
context: .
dockerfile: ./pipelines.Dockerfile
container_name: docker_example_pipelines
image: docker_example_pipelines_image
environment:
DAGSTER_POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
DAGSTER_POSTGRES_DB: "${POSTGRES_DB}"
DAGSTER_POSTGRES_HOSTNAME: "${POSTGRES_HOSTNAME}"
DAGSTER_DAGSTER_CURRENT_IMAGE: "docker_example_pipelines_image"
networks:
- docker_example_network
docker_example_dagit:
build:
context: .
dockerfile: ./dagster.Dockerfile
entrypoint:
- dagit
- -h
- "0.0.0.0"
- -p
- "3000"
- -w
- workspace.yaml
container_name: docker_example_dagit
expose:
- "3000"
ports:
- "3000:3000"
environment:
DAGSTER_POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
DAGSTER_POSTGRES_DB: "${POSTGRES_DB}"
DAGSTER_POSTGRES_HOSTNAME: "${POSTGRES_HOSTNAME}"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- docker_example_network
depends_on:
- docker_example_postgresql
- docker_example_pipelines
docker_example_daemon:
build:
context: .
dockerfile: ./dagster.Dockerfile
entrypoint:
- dagster-daemon
- run
container_name: docker_example_daemon
restart: on-failure
environment:
DAGSTER_POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
DAGSTER_POSTGRES_DB: "${POSTGRES_DB}"
DAGSTER_POSTGRES_HOSTNAME: "${POSTGRES_HOSTNAME}"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- docker_example_network
depends_on:
- docker_example_postgresql
- docker_example_pipelines
networks:
docker_example_network:
driver: bridge
name: docker_example_network
workspace.yml
load_from:
- grpc_server:
host: docker_example_pipelines
port: 4000
location_name: "example_pipelines"
dagster.yamlKieron Ellis
06/14/2021, 5:06 PMscheduler:
module: dagster.core.scheduler
class: DagsterDaemonScheduler
run_coordinator:
module: dagster.core.run_coordinator
class: QueuedRunCoordinator
run_launcher:
module: dagster_docker
class: DockerRunLauncher
config:
env_vars:
- DAGSTER_POSTGRES_HOSTNAME
- DAGSTER_POSTGRES_USER
- POSTGRES_PASSWORD
- DAGSTER_POSTGRES_DB
network: docker_example_network
run_storage:
module: dagster_postgres.run_storage
class: PostgresRunStorage
config:
postgres_db:
hostname:
env: DAGSTER_POSTGRES_HOSTNAME
username:
env: DAGSTER_POSTGRES_USER
password:
env: POSTGRES_PASSWORD
db_name:
env: DAGSTER_POSTGRES_DB
port: 5432
schedule_storage:
module: dagster_postgres.schedule_storage
class: PostgresScheduleStorage
config:
postgres_db:
hostname:
env: DAGSTER_POSTGRES_HOSTNAME
username:
env: DAGSTER_POSTGRES_USER
password:
env: POSTGRES_PASSWORD
db_name:
env: DAGSTER_POSTGRES_DB
port: 5432
event_log_storage:
module: dagster_postgres.event_log
class: PostgresEventLogStorage
config:
postgres_db:
hostname:
env: DAGSTER_POSTGRES_HOSTNAME
username:
env: DAGSTER_POSTGRES_USER
password:
env: POSTGRES_PASSWORD
db_name:
env: DAGSTER_POSTGRES_DB
port: 5432
daniel
06/14/2021, 5:08 PMMarc Keeling
10/18/2021, 10:15 PMdaniel
10/18/2021, 10:18 PMMarc Keeling
10/18/2021, 10:20 PM