Skip to content

Compose Setup doesn't work at all #130

Open

Description

@anghenfil

Hey,

I followed the instructions, but the seeder always crashes:

Executing database migrations...
seeder-1    | /app/lib/tasks/database.rake:84:in 'block (3 levels) in <top (required)>': 
seeder-1    | ---------------------------------------------------
seeder-1    | DATABASE DEPRECATION WARNING
seeder-1    | 
seeder-1    | OpenProject versions higher than 16.0 will require at least PostgreSQL 17.
seeder-1    | You can anticipate this upgrade by updating your database installation by following the guide at https://www.openproject.org/docs/installation-and-operations/misc/migration-to-postgresql17/
seeder-1    | ---------------------------------------------------
seeder-1    |  (StructuredWarnings::StandardWarning)
seeder-1    | Executing database seed...
seeder-1    | rake aborted!
seeder-1    | NameError: uninitialized constant Queries::Projects::Filters::NameAndIdentifierFilter (NameError)
seeder-1    | 
seeder-1    |     filter Filters::NameAndIdentifierFilter
seeder-1    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
seeder-1    | /app/app/models/queries/projects.rb:46:in 'block in <module:Projects>'
seeder-1    | /app/app/models/queries/register.rb:72:in 'BasicObject#instance_exec'
seeder-1    | /app/app/models/queries/register.rb:72:in 'Queries::Register.register'
seeder-1    | /app/app/models/queries/projects.rb:32:in '<module:Projects>'
seeder-1    | /app/app/models/queries/projects.rb:31:in '<top (required)>'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:26:in 'Kernel#require'
seeder-1    | /app/modules/budgets/lib/budgets/engine.rb:104:in 'block (2 levels) in <class:Engine>'
seeder-1    | /app/app/models/queries/register.rb:72:in 'BasicObject#instance_exec'
seeder-1    | /app/app/models/queries/register.rb:72:in 'Queries::Register.register'
seeder-1    | /app/modules/budgets/lib/budgets/engine.rb:103:in 'block in <class:Engine>'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:406:in 'BasicObject#instance_exec'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:406:in 'block in ActiveSupport::Callbacks::CallTemplate::InstanceExec0#make_lambda'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:178:in 'block in ActiveSupport::Callbacks::Filters::Before#call'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:668:in 'block (2 levels) in ActiveSupport::Callbacks::CallbackChain#default_terminator'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:667:in 'Kernel#catch'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:667:in 'block in ActiveSupport::Callbacks::CallbackChain#default_terminator'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:179:in 'ActiveSupport::Callbacks::Filters::Before#call'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:559:in 'block in ActiveSupport::Callbacks::CallbackSequence#invoke_before'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:559:in 'Array#each'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:559:in 'ActiveSupport::Callbacks::CallbackSequence#invoke_before'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/callbacks.rb:108:in 'ActiveSupport::Callbacks#run_callbacks'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.3/lib/active_support/reloader.rb:96:in 'ActiveSupport::Reloader.prepare!'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/application/finisher.rb:73:in 'block in <module:Finisher>'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/initializable.rb:32:in 'BasicObject#instance_exec'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/initializable.rb:32:in 'Rails::Initializable::Initializer#run'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/initializable.rb:61:in 'block in Rails::Initializable#run_initializers'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:231:in 'block in TSort.tsort_each'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:353:in 'block (2 levels) in TSort.each_strongly_connected_component'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:434:in 'TSort.each_strongly_connected_component_from'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:352:in 'block in TSort.each_strongly_connected_component'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Rails::Initializable::Collection#each'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'Method#call'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:350:in 'TSort.each_strongly_connected_component'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:229:in 'TSort.tsort_each'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/tsort-0.2.0/lib/tsort.rb:208:in 'TSort#tsort_each'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/initializable.rb:60:in 'Rails::Initializable#run_initializers'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/application.rb:444:in 'Rails::Application#initialize!'
seeder-1    | /app/config/environment.rb:35:in '<top (required)>'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in 'Kernel#require'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/application.rb:420:in 'Rails::Application#require_environment!'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/railties-8.0.3/lib/rails/application.rb:571:in 'block in Rails::Application#run_tasks_blocks'
seeder-1    | /app/vendor/bundle/ruby/3.4.0/gems/rake-13.3.0/exe/rake:27:in '<top (required)>'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/cli/exec.rb:59:in 'Kernel.load'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/cli/exec.rb:59:in 'Bundler::CLI::Exec#kernel_load'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/cli/exec.rb:23:in 'Bundler::CLI::Exec#run'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/cli.rb:456:in 'Bundler::CLI#exec'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/vendor/thor/lib/thor/command.rb:28:in 'Bundler::Thor::Command#run'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in 'Bundler::Thor::Invocation#invoke_command'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/vendor/thor/lib/thor.rb:538:in 'Bundler::Thor.dispatch'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/cli.rb:35:in 'Bundler::CLI.dispatch'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/vendor/thor/lib/thor/base.rb:584:in 'Bundler::Thor::Base::ClassMethods#start'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/cli.rb:29:in 'Bundler::CLI.start'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/exe/bundle:28:in 'block in <top (required)>'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/lib/bundler/friendly_errors.rb:118:in 'Bundler.with_friendly_errors'
seeder-1    | /usr/local/bundle/gems/bundler-2.7.2/exe/bundle:20:in '<top (required)>'
seeder-1    | /usr/local/bundle/bin/bundle:25:in 'Kernel#load'
seeder-1    | /usr/local/bundle/bin/bundle:25:in '<main>'
seeder-1    | Tasks: TOP => db:seed => db:load_config => environment
seeder-1    | (See full trace by running task with --trace)
seeder-1 exited with code 1 (restarting)

Activity

  1. Julian-Dumitrascu commented on Dec 13, 2025

    @Julian-Dumitrascu

    And the team seems to not give a damn.
    Why should I?
    Maybe I've tried enough already.

  2. anghenfil commented on Dec 13, 2025

    @anghenfil
    Author

    At this point, I'm not sure if this can be called an open source project. This is their recommended deployment way, and it still fails since months. If your open source project doesn't work self-hosted, it's not an open source project :(

  3. cbliard commented on Dec 15, 2025

    @cbliard
    Member

    Hi @Julian-Dumitrascu and @anghenfil,

    I tried following the instructions from the "Quick start" section of the README.

    I copied the .env.example file to .env and just changed the PGDATA and OPDATA paths like this:

    PGDATA="/Users/cbliard/tmp/openproject/var/lib/postgresql/data"
    OPDATA="/Users/cbliard/tmp/openproject/var/openproject/assets"
    

    And I was able to start it.
    Here is the log of me starting it:

    ~/tmp $ git clone https://github.com/opf/openproject-docker-compose.git --depth=1 --branch=stable/16 openproject
    Cloning into 'openproject'...
    remote: Enumerating objects: 19, done.
    remote: Counting objects: 100% (19/19), done.
    remote: Compressing objects: 100% (15/15), done.
    remote: Total 19 (delta 1), reused 9 (delta 1), pack-reused 0 (from 0)
    Receiving objects: 100% (19/19), 8.35 KiB | 8.35 MiB/s, done.
    Resolving deltas: 100% (1/1), done.
    
    ~/tmp $ cd openproject
    
    ~/tmp/openproject $ cp .env.example .env
    
    ~/tmp/openproject $ vim .env
    
    ~/tmp/openproject $ mkdir -p var/openproject/assets
    
    ~/tmp/openproject $ vim .env
    
    ~/tmp/openproject $ pwd
    /Users/cbliard/tmp/openproject
    
    ~/tmp/openproject $ vim .env
    
    ~/tmp/openproject $ OPENPROJECT_HTTPS=false docker compose up -d --build --pull always
    unable to get image 'willfarrell/autoheal:1.2.0': Cannot connect to the Docker daemon at unix:///Users/cbliard/.docker/run/docker.sock. Is the docker daemon running?
    
    ~/tmp/openproject $ OPENPROJECT_HTTPS=false docker compose up -d --build --pull always
    [+] Running 50/50
     ✔ autoheal Pulled                                                                             20.5s
       ✔ 595b0fe564bb Pull complete                                                                12.5s
       ✔ e5a3fbbae331 Pull complete                                                                12.8s
       ✔ 94050d140dce Pull complete                                                                12.8s
     ✔ cron Pulled                                                                                 29.7s
       ✔ 7f2b9668af76 Pull complete                                                                 2.8s
       ✔ a0da1fc24a51 Pull complete                                                                 3.2s
       ✔ 62a266a3916e Pull complete                                                                 4.9s
       ✔ 79bcc4522f03 Pull complete                                                                 9.2s
       ✔ 1ce378f1188e Pull complete                                                                 9.2s
       ✔ 2d8245d814a5 Pull complete                                                                10.1s
       ✔ dee73cd6e226 Pull complete                                                                10.1s
       ✔ d7b7ffd0b71e Pull complete                                                                10.1s
       ✔ 4f4fb700ef54 Pull complete                                                                10.2s
       ✔ 958b55ab3c19 Pull complete                                                                10.3s
       ✔ e95e4bef0f5c Pull complete                                                                10.3s
       ✔ f42c1666347c Pull complete                                                                14.3s
       ✔ b4f19a77c94a Pull complete                                                                14.3s
       ✔ 08c45bd98bd8 Pull complete                                                                15.6s
       ✔ 840a20d57054 Pull complete                                                                15.6s
       ✔ b3b5473065f3 Pull complete                                                                15.7s
       ✔ c1ae1dd189d8 Pull complete                                                                15.8s
       ✔ 23b1b86d00df Pull complete                                                                20.2s
       ✔ bd33cd10d5b5 Pull complete                                                                22.6s
       ✔ b57d3149c10b Pull complete                                                                22.6s
     ✔ worker Pulled                                                                               29.7s
     ✔ db Pulled                                                                                   22.0s
       ✔ 51365f04b688 Pull complete                                                                11.0s
       ✔ 67a0685eff33 Pull complete                                                                11.0s
       ✔ 289ba9b84cf8 Pull complete                                                                11.2s
       ✔ 9830e9766e5f Pull complete                                                                11.2s
       ✔ 2b148d8d601c Pull complete                                                                11.5s
       ✔ c6e27ff4af67 Pull complete                                                                11.5s
       ✔ 8e69676c8795 Pull complete                                                                11.5s
       ✔ 5900f9d8e37a Pull complete                                                                11.6s
       ✔ bb74cba8e387 Pull complete                                                                14.3s
       ✔ fa7624935209 Pull complete                                                                14.3s
       ✔ e77a22e259ea Pull complete                                                                14.3s
       ✔ 9dd2f137d98b Pull complete                                                                14.3s
       ✔ 81c1bd4a8bc2 Pull complete                                                                14.3s
       ✔ 1de5cb393304 Pull complete                                                                14.3s
     ✔ seeder Pulled                                                                               29.7s
     ✔ web Pulled                                                                                  29.7s
     ✔ cache Pulled                                                                                17.6s
       ✔ f626fba1463b Pull complete                                                                 9.9s
       ✔ f91cd2e642e1 Pull complete                                                                 9.9s
       ✔ eb9b5941656d Pull complete                                                                 9.9s
       ✔ bcc829d43c31 Pull complete                                                                 9.9s
       ✔ 685e3db2e1ea Pull complete                                                                 9.9s
       ✔ 8bedd2011ff5 Pull complete                                                                10.0s
    #1 [internal] load local bake definitions
    #1 reading from stdin 580B done
    #1 DONE 0.0s
    
    #2 [internal] load build definition from Dockerfile
    #2 transferring dockerfile: 281B done
    #2 DONE 0.0s
    
    #3 [internal] load metadata for docker.io/library/caddy:2
    #3 DONE 0.0s
    
    #4 [internal] load .dockerignore
    #4 transferring context: 2B done
    #4 DONE 0.0s
    
    #5 [internal] load build context
    #5 transferring context: 866B done
    #5 DONE 0.0s
    
    #6 [1/3] FROM docker.io/library/caddy:2
    #6 DONE 0.0s
    
    #7 [2/3] COPY ./Caddyfile.template /etc/caddy/Caddyfile.template
    #7 DONE 0.3s
    
    #8 [3/3] RUN sed 's|${APP_HOST}|'"web"'|g' /etc/caddy/Caddyfile.template > /etc/caddy/Caddyfile
    #8 DONE 0.1s
    
    #9 exporting to image
    #9 exporting layers 0.0s done
    #9 writing image sha256:afbbc6d24791304f27f3bedfb29d38dc0a1ec78ab9b526ea02d17c0e298b4c3a done
    #9 naming to docker.io/openproject/proxy done
    #9 DONE 0.0s
    
    #10 resolving provenance for metadata file
    #10 DONE 0.0s
    [+] Running 11/12
     ✔ openproject/proxy                 Built                                                      0.0s
     ✔ Network openproject_backend       Created                                                    0.0s
     ✔ Network openproject_frontend      Created                                                    0.0s
     ✔ Network openproject_default       Created                                                    0.0s
     ✔ Container openproject-autoheal-1  Started                                                    0.3s
     ✔ Container openproject-cache-1     Started                                                    0.3s
     ✔ Container openproject-db-1        Started                                                    0.3s
     ✔ Container openproject-seeder-1    Started                                                    0.3s
     ✔ Container openproject-worker-1    Started                                                    0.5s
     ✔ Container openproject-web-1       Started                                                    0.5s
     ✔ Container openproject-cron-1      Started                                                    0.5s
     ⠸ Container openproject-proxy-1     Starting                                                   0.7s
    Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint openproject-proxy-1 (6499619694d92c72d0f0ea4631defd7eae323d53a493f44d36b67d401c7739a0): Bind for 0.0.0.0:8080 failed: port is already allocated
    
    ~/tmp/openproject $ OPENPROJECT_HTTPS=false docker compose up -d --build --pull always
    [+] Running 7/7
     ✔ seeder Pulled                                                                                1.2s
     ✔ db Pulled                                                                                    1.2s
     ✔ web Pulled                                                                                   1.2s
     ✔ cache Pulled                                                                                 1.2s
     ✔ worker Pulled                                                                                1.2s
     ✔ cron Pulled                                                                                  1.2s
     ✔ autoheal Pulled                                                                              1.2s
    #1 [internal] load local bake definitions
    #1 reading from stdin 580B done
    #1 DONE 0.0s
    
    #2 [internal] load build definition from Dockerfile
    #2 transferring dockerfile: 281B done
    #2 DONE 0.0s
    
    #3 [internal] load metadata for docker.io/library/caddy:2
    #3 DONE 0.0s
    
    #4 [internal] load .dockerignore
    #4 transferring context: 2B done
    #4 DONE 0.0s
    
    #5 [1/3] FROM docker.io/library/caddy:2
    #5 DONE 0.0s
    
    #6 [internal] load build context
    #6 transferring context: 40B done
    #6 DONE 0.0s
    
    #7 [2/3] COPY ./Caddyfile.template /etc/caddy/Caddyfile.template
    #7 CACHED
    
    #8 [3/3] RUN sed 's|${APP_HOST}|'"web"'|g' /etc/caddy/Caddyfile.template > /etc/caddy/Caddyfile
    #8 CACHED
    
    #9 exporting to image
    #9 exporting layers done
    #9 writing image sha256:afbbc6d24791304f27f3bedfb29d38dc0a1ec78ab9b526ea02d17c0e298b4c3a done
    #9 naming to docker.io/openproject/proxy done
    #9 DONE 0.0s
    
    #10 resolving provenance for metadata file
    #10 DONE 0.0s
    [+] Running 9/9
     ✔ openproject/proxy                 Built                                                      0.0s
     ✔ Container openproject-cache-1     Running                                                    0.0s
     ✔ Container openproject-db-1        Running                                                    0.0s
     ✔ Container openproject-autoheal-1  Running                                                    0.0s
     ✔ Container openproject-cron-1      Running                                                    0.0s
     ✔ Container openproject-worker-1    Running                                                    0.0s
     ✔ Container openproject-web-1       Running                                                    0.0s
     ✔ Container openproject-seeder-1    Started                                                    0.1s
     ✔ Container openproject-proxy-1     Started                                                    0.1s
    

    You can see it failed twice for me:

    • a first time because docker was not started. Starting it fixed it.
    • a second time because port 8080 was already in use. Stopping the service I had running on port 8080 fixed it.

    Your issue seems different.

    Could you be more specific and please share the instructions you used and the .env content?
    Also could you please share the environment on which you're running (OS, dsitribution, version, anything useful, etc.)

  4. MarkinBrisbane commented on Jan 15, 2026

    @MarkinBrisbane

    With the release of 17-rc, I decided to have a fresh look at OpenProject. I had two installation scenarios:

    1. My laptop which had docker desktop
    2. A lab machine

    Neither the docker run or docker compose options worked as per the documentation, I ended up with about a 30 minute conversation with claude.ai to get them working. Much of the challenge was around hostname and how strict the hostname setting is for the server and the client accessing it.

    This is the results:
    docker desktop - docker run importantly using http://localhost:8080 and waiting 2-5 minutes for the database stuff to be setup
    docker run -d -p 8080:80 --name openproject -e OPENPROJECT_SECRET_KEY_BASE=secret -e OPENPROJECT_HOST__NAME=localhost -e OPENPROJECT_HTTPS=false -e OPENPROJECT_DEFAULT__LANGUAGE=en -v openproject_data:/var/openproject/assets openproject/openproject:17-rc

    docker compose on a lab host with internal ip of 192.168.1.240 using http://192.168.1.240:18080 and waiting 2-5 minutes for the database stuff to be setup

    version: "3.7"
    
    networks:
      frontend:
      backend:
    
    volumes:
      pgdata:
      opdata:
    
    x-op-restart-policy: &restart_policy
      restart: unless-stopped
    
    x-op-image: &image
      image: openproject/openproject:17-rc
    
    x-op-app: &app
      <<: [*image, *restart_policy]
      environment:
        # Disable HTTPS
        OPENPROJECT_HTTPS: "false"
        OPENPROJECT_HSTS: "false"
        
        # Server name configuration
        SERVER_NAME: "192.168.1.240"
        
        # Database configuration
        OPENPROJECT_HOST__NAME: 192.168.1.240
        DATABASE_URL: "postgres://postgres:p4ssw0rd@db:5432/openproject"
        
        # Rails configuration
        RAILS_CACHE_STORE: "memcache"
        OPENPROJECT_CACHE__MEMCACHE__SERVER: "cache:11211"
        OPENPROJECT_RAILS__RELATIVE__URL__ROOT: ""
        
        # Email configuration (optional - configure if you need email)
        # OPENPROJECT_EMAIL__DELIVERY__METHOD: "smtp"
        # OPENPROJECT_SMTP__ADDRESS: "smtp.example.com"
        # OPENPROJECT_SMTP__PORT: "587"
        # OPENPROJECT_SMTP__AUTHENTICATION: "plain"
        # OPENPROJECT_SMTP__DOMAIN: "example.com"
        # OPENPROJECT_SMTP__USER__NAME: "user@example.com"
        # OPENPROJECT_SMTP__PASSWORD: "password"
        # OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true"
      volumes:
        - opdata:/var/openproject/assets
      depends_on:
        - db
        - cache
    
    services:
      db:
        image: postgres:13
        <<: *restart_policy
        stop_grace_period: "3s"
        volumes:
          - pgdata:/var/lib/postgresql/data
        environment:
          POSTGRES_PASSWORD: p4ssw0rd
          POSTGRES_DB: openproject
        networks:
          - backend
    
      cache:
        image: memcached
        <<: *restart_policy
        networks:
          - backend
    
      proxy:
        <<: [*image, *restart_policy]
        command: "./docker/prod/proxy"
        ports:
          - "18080:80"
        environment:
          APP_HOST: web
          OPENPROJECT_HTTPS: "false"
          OPENPROJECT_HSTS: "false"
          SERVER_NAME: 192.168.1.243
        depends_on:
          - web
        networks:
          - frontend
    
      web:
        <<: *app
        command: "./docker/prod/web"
        networks:
          - frontend
          - backend
        depends_on:
          - db
          - cache
          - seeder
    
      worker:
        <<: *app
        command: "./docker/prod/worker"
        networks:
          - backend
        depends_on:
          - db
          - cache
          - seeder
    
      cron:
        <<: *app
        command: "./docker/prod/cron"
        networks:
          - backend
        depends_on:
          - db
          - cache
          - seeder
    
      seeder:
        <<: *app
        command: "./docker/prod/seeder"
        restart: on-failure
        networks:
          - backend
    
  5. cbliard commented on Jan 15, 2026

    @cbliard
    Member

    Thank you for taking the time to test it again. I feel sorry that the process was not smoother.

    docker desktop - docker run importantly using http://localhost:8080 and waiting 2-5 minutes for the database stuff to be setup
    docker run -d -p 8080:80 --name openproject -e OPENPROJECT_SECRET_KEY_BASE=secret -e OPENPROJECT_HOST__NAME=localhost -e OPENPROJECT_HTTPS=false -e OPENPROJECT_DEFAULT__LANGUAGE=en -v openproject_data:/var/openproject/assets openproject/openproject:17-rc

    I tried the command you provided and it seemed to work well.

    One discrepancy I saw is that it's on localhost:8080, but the configured hostname is localhost. So when the app needs to generate links, it generates them with https://localhost/... which are dead links because it should be localhost:8080.

    Here is a screenshot where I hover a link from the "getting started" text. The destination is visible in the bottom left corner.

    Image

    I then also tried the command we document in our all-in-one container:

    docker run -p 8080:80 \
      -e SECRET_KEY_BASE=secret \
      -e OPENPROJECT_HOST__NAME=localhost:8080 \
      -e OPENPROJECT_HTTPS=false \
      -e OPENPROJECT_DEFAULT__LANGUAGE=en \
      openproject/openproject:17

    I only removed the -it part from the provided command. Also I used openproject/openproject:17 and not openproject/openproject:17-rc.

    It worked well too.

    I know the app can be picky about the hostname value but I'm not sure to get what are the problems you encountered. Can you elaborate about the issues you had with it?

    I left the docker compose part for later. I'll try it once this all-in-one container is done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions