Hello , I am trying to run a prefect in docker. I ...
# ask-community
o
Hello , I am trying to run a prefect in docker. I looked in this community. But it seems that there is no proper docker compose file for prefect. I was trying to use this for the prefect docker compose. I am very new to docker. So, I tried to write a docker compose to up and prefect. I am also learning prefect very recently. I tried to write the docker compose below following this example. Is there any proper docker compose.yml file that I can use to create nodes for prefect and view the prefect dashboard? The dashboard is not showing. I am looking for docker-compose.yml for prefect v3. Thank you in advance for any assistance. https://github.com/PrefectHQ/prefect-background-task-examples/blob/main/chaos-duck/docker-compose.yaml But I seem to be encountering this issue in the docker compose logs.
Copy code
prefect  | During handling of the above exception, another exception occurred:
prefect  | 
prefect  | Traceback (most recent call last):
prefect  |   File "/usr/local/bin/prefect", line 8, in <module>
prefect  |     sys.exit(cli())
prefect  |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1130, in __call__
prefect  |     return self.main(*args, **kwargs)
prefect  |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1055, in main
prefect  |     rv = self.invoke(ctx)
prefect  |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1657, in invoke
prefect  |     return _process_result(sub_ctx.command.invoke(sub_ctx))
prefect  |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1657, in invoke
prefect  |     return _process_result(sub_ctx.command.invoke(sub_ctx))
prefect  |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1404, in invoke
prefect  |     return ctx.invoke(self.callback, **ctx.params)
prefect  |   File "/usr/local/lib/python3.7/site-packages/click/core.py", line 760, in invoke
prefect  |     return __callback(*args, **kwargs)
prefect  |   File "/usr/local/lib/python3.7/site-packages/prefect/cli/server.py", line 674, in start
prefect  |     ["docker-compose", "down"], cwd=compose_dir_path, env=env
prefect  |   File "/usr/local/lib/python3.7/subprocess.py", line 411, in check_output
prefect  |     **kwargs).stdout
prefect  |   File "/usr/local/lib/python3.7/subprocess.py", line 488, in run
prefect  |     with Popen(*popenargs, **kwargs) as process:
prefect  |   File "/usr/local/lib/python3.7/subprocess.py", line 800, in __init__
prefect  |     restore_signals, start_new_session)
prefect  |   File "/usr/local/lib/python3.7/subprocess.py", line 1551, in _execute_child
prefect  |     raise child_exception_type(errno_num, err_msg, err_filename)
prefect  | FileNotFoundError: [Errno 2] No such file or directory: 'docker-compose': 'docker-compose'
My docker-compose.yml
Copy code
services:

  postgres:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_USER: prefect
      POSTGRES_PASSWORD: password
      POSTGRES_DB: prefect
    volumes:
      - postgres-data:/var/lib/postgresql/data
    networks:
      - prefect-net

  prefect:
    image: prefecthq/prefect:latest
    container_name: prefect
    restart: always
    environment:
      PREFECT_HOME: /data
      PREFECT_API_DATABASE_CONNECTION_URL: <postgresql+asyncpg://prefect:password@postgres/prefect>
    command: prefect server start
    ports:
      - "4200:4200"
    volumes:
      - prefect-data:/data
    depends_on:
      - postgres
    networks:
      - prefect-net

volumes:
  postgres-data:
  prefect-data:

networks:
  prefect-net:
j
Ran into something similar caused by an outdated docker-compose. Make sure you download the latest docker-compose binaries https://docs.docker.com/compose/install/. Here is the compose YAML file that is working for me:
Copy code
name: prefect
services:
  prefect:
    image: prefecthq/prefect:3-python3.12
    command: ["prefect", "server", "start"]
    ports:
      - "4200:4200"
    environment:
      PREFECT_SERVER_API_HOST: "0.0.0.0"
      PREFECT_LOGGING_LEVEL: "INFO"
      PREFECT_SERVER_ANALYTICS_ENABLED: "False"
      PREFECT_API_DATABASE_CONNECTION_URL: "<postgresql+asyncpg://postgres:postgres@postgres:5432/prefect>"
    depends_on:
      - postgres
  postgres:
    image: postgres:alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"
      POSTGRES_DB: "prefect" 
    volumes:
      - /home/foo/bar/prefectdb:/var/lib/postgresql/data
o
Thank you so much @Juan Alvarado. It worked. šŸ™‚
l
I met the same issue. My environments: Ubuntu: 22.04.2 prefect: 3.0.10 Docker Compose version v2.29.7 I use the latest prefect repo: git clone https://github.com/PrefectHQ/prefect.git I use @Juan Alvarado’s docker-compose.yml file, just update image to latest tag May I understand that in the latest prefect image, there is no docker-compose command?
Copy code
name: prefect
services:
  prefect:
    image: prefecthq/prefect:latest
    command: ["prefect", "server", "start"]
    ports:
      - "4200:4200"
    environment:
      PREFECT_SERVER_API_HOST: "0.0.0.0"
      PREFECT_LOGGING_LEVEL: "INFO"
      PREFECT_SERVER_ANALYTICS_ENABLED: "False"
      PREFECT_API_DATABASE_CONNECTION_URL: "<postgresql+asyncpg://postgres:postgres@postgres:5432/prefect>"
    depends_on:
      - postgres
  postgres:
    image: postgres:alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"
      POSTGRES_DB: "prefect"
    tmpfs: /var/lib/postgresql/data
I am very new to prefect. Trying to setup my hosted prefect server with dashboard in one Ubuntu server. @omiakif do you have install document that could share with me? thanks.
173 Views