Error building docker with 1.15 and 26.0.1

All I did was change the default Dockerfile that comes with a new phx project to have the latest versions

eg

ARG ELIXIR_VERSION=1.15.0
ARG OTP_VERSION=26.0.1
ARG DEBIAN_VERSION=bullseye-20230612-slim

ARG BUILDER_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
ARG RUNNER_IMAGE="debian:${DEBIAN_VERSION}"

FROM ${BUILDER_IMAGE} as builder

and I get this error when building it in my github action:

#22 47.23 src/ssl_verify_hostname.erl:16:14: can't find include lib "public_key/include/public_key.hrl"
#22 47.23 %   16| -include_lib("public_key/include/public_key.hrl").
#22 47.23 %     |              ^
#22 47.23 
#22 47.23 src/ssl_verify_hostname.erl:28:26: record 'OTPCertificate' undefined
#22 47.23 %   28| -spec verify_fun(Cert :: #'OTPCertificate'{},
#22 47.23 %     |                          ^
#22 47.23 
#22 47.23 src/ssl_verify_hostname.erl:30:39: record 'Extension' undefined
#22 47.23 %   30|                           {extension, #'Extension'{}}, InitialUserState :: term()) ->
#22 47.23 %     |                                       ^
#22 47.23 
#22 47.23 src/ssl_verify_hostname.erl:46:36: record 'OTPCertificate' undefined
#22 47.23 %   46| -spec verify_cert_hostname(Cert :: #'OTPCertificate'{}, Hostname :: hostname()) ->
#22 47.23 %     |                                    ^
#22 47.23 
#22 47.23 src/ssl_verify_hostname.erl:76:38: record 'OTPCertificate' undefined
#22 47.23 %   76|                              Cert :: #'OTPCertificate'{},
#22 47.23 %     |                                      ^
#22 47.23 
#22 47.24 could not compile dependency :ssl_verify_fun, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile ssl_verify_fun --force", update it with "mix deps.update ssl_verify_fun" or clean it with "mix deps.clean ssl_verify_fun"
#22 ERROR: process "/bin/sh -c mix deps.compile" did not complete successfully: exit code: 1
------
 > [builder  9/17] RUN mix deps.compile:
47.23 
47.23 src/ssl_verify_hostname.erl:46:36: record 'OTPCertificate' undefined
47.23 %   46| -spec verify_cert_hostname(Cert :: #'OTPCertificate'{}, Hostname :: hostname()) ->
47.23 %     |                                    ^
47.23 
47.23 src/ssl_verify_hostname.erl:76:38: record 'OTPCertificate' undefined
47.23 %   76|                              Cert :: #'OTPCertificate'{},
47.23 %     |                                      ^
47.23 
47.24 could not compile dependency :ssl_verify_fun, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile ssl_verify_fun --force", update it with "mix deps.update ssl_verify_fun" or clean it with "mix deps.clean ssl_verify_fun"
------
Dockerfile:46
--------------------
  44 |     # to be re-compiled.
  45 |     COPY config/config.exs config/${MIX_ENV}.exs config/
  46 | >>> RUN mix deps.compile
  47 |     
  48 |     COPY priv priv
--------------------
ERROR: failed to solve: process "/bin/sh -c mix deps.compile" did not complete successfully: exit code: 1
Error: buildx failed with: ERROR: failed to solve: process "/bin/sh -c mix deps.compile" did not complete successfully: exit code: 1

any ideas?

1 Like

ugh, just had to

mix deps.unlock ssl_verify_fun
mix deps.get

and then it worked.

2 Likes

Meaning an upgrade of the dependency? Yeah, that’s expected, many libraries have been changed to support one of the breaking changes.

1 Like