Joseki-jl/Joseki.jl

Deploy to Heroku

Closed this issue · 1 comments

Inspired by the instructions at the deprecated JuliaHerokuEndpoint, I'm attempting to deploy this to Heroku.

This is a similar situation to the report on Julia Discourse, but I'm using your repo here, rather than mine. The outcomes are similar. The container runs fine locally, but fails in Heroku. The errors in each case are slightly different.

Here are the commands I'm using for this repo:

git clone https://github.com/amellnik/Joseki.jl.git
cd Joseki.jl
HEROKU_APP_NAME="joseki-example"
heroku create $HEROKU_APP_NAME
heroku container:push web --app $HEROKU_APP_NAME
heroku container:release web --app $HEROKU_APP_NAME
heroku logs --tail --app $HEROKU_APP_NAME

Here are the generated errors:

Scaled to web@1:Free by user ...........

Starting process with command `/bin/sh -c julia\ --project\ ./examples/docker-simple.jl`
ERROR: LoadError: ArgumentError: Package HTTP [cd3eb016-35fb-5094-929b-558a96fad6f3] is required but does not seem to be installed:
- Run `Pkg.instantiate()` to install all recorded dependencies.

Stacktrace:
[1] _require(::Base.PkgId) at ./loading.jl:929
[2] require(::Base.PkgId) at ./loading.jl:858
[3] require(::Module, ::Symbol) at ./loading.jl:853
[4] include at ./boot.jl:317 [inlined]
[5] include_relative(::Module, ::String) at ./loading.jl:1044
[6] include(::Module, ::String) at ./sysimg.jl:29
[7] top-level scope at none:2
[8] eval at ./boot.jl:319 [inlined]
[9] eval(::Expr) at ./client.jl:393
[10] top-level scope at ./none:3
in expression starting at /Joseki/src/Joseki.jl:3
ERROR: LoadError: Failed to precompile Joseki [b588beb9-536a-5a7d-a241-c127386fde06] to /Joseki/.julia/compiled/v1.0/Joseki/6mJDW.ji.
Stacktrace:
[1] error(::String) at ./error.jl:33
[2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1203
[3] _require(::Base.PkgId) at ./loading.jl:960
[4] require(::Base.PkgId) at ./loading.jl:858
[5] require(::Module, ::Symbol) at ./loading.jl:853
[6] include at ./boot.jl:317 [inlined]
[7] include_relative(::Module, ::String) at ./loading.jl:1044
[8] include(::Module, ::String) at ./sysimg.jl:29
[9] exec_options(::Base.JLOptions) at ./client.jl:266
[10] _start() at ./client.jl:425
in expression starting at /Joseki/examples/docker-simple.jl:1
State changed from starting to crashed
State changed from crashed to starting
Process exited with status 1

The command to run the container locally, which works fine:

docker run --rm -p 8000:8000 registry.heroku.com/$HEROKU_APP_NAME/web

Got this working using buildpacks. Updated my example repo to show the necessary steps.