Solving the “PKIX path building failed” “unable to find valid certification path to requested target”

This week I’ve come across the following stacktrace in a Java application while connecting to a web service over HTTPS. The exception was thrown due to certificate not being valid. The message says that Java is unable to find a valid certification path. But the browser marks the certificate as valid. This happened because the app was running on an older version of Java that did not recognize this root certificate authority (CA)....

June 12, 2021

Installing Composer in the official PHP Docker image

Composer is a dependency management tool for PHP that has been around for almost 8 years now, but it’s still not included in the official Docker images. Composer recommends to automate the install using their script. It needs to be downloaded, but the php:7.4-apache image does not contain wget. FROM php:7.4-apache RUN apt update && apt-get install -y wget RUN wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet --version=1.10.15 RUN mv composer....

November 14, 2020

Micronaut 2.0 REST API Swagger UI with Maven and Kotlin

I was playing around with Micronaut framework 2.0 which was released a couple of days ago (June 26th) for a personal project, a web service with a REST API. I wanted to use Swagger UI, but Micronaut’s documentation does not cover how to set it up with Maven and Kotlin. It went something like this. Generate a new Micronaut 2.0 project. Add some REST endpoints. Follow the Micronaut OpenAPI/Swagger docs (1....

July 9, 2020

WordPress as a 12-factor app

PHP was the first programming (scripting, yes, I know) language that I learned. I had some experience using and managing WordPress, I also liked its features, and I knew that all my needs would already be covered by some plugin of the WordPress ecosystem. Still, I almost didn’t use WordPress to power my blog. I wanted my blog to be versioned (in Git), packaged in a Docker container, and cloud ready....

June 20, 2020