So here is nice chain of docker errors and its solution.
1. Docker has reached its maximum of created networks and errors like this:
ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
The easiest (and most brute though) solution to this is to prune all networks, as suggested here on SO.
docker network prune
This will delete all networks that are not connected to currently active containers. But this also means it will delete all networks of your not runnning dev projects. (Which might be numerous as in my case.)
Sometime ago I tried to use Adminer in Docker to administrate a sqlite database, which was not as easy as expected. If you are a happy user of IntelliJ IDE like PHPStorm or IntelliJ Ultimate like me :) then i would nowadays recommend to use the built-in database tool of your IntelliJ IDE for Sqlite administration instead. Even in dockerized context.
You might encounter this deprecation message after your upgrade to symfony 5.1 in your symfony project:
Since symfony/dotenv 5.1: Passing a boolean to the constructor of “Symfony\Component\Dotenv\Dotenv” is deprecated, use “Dotenv::usePutenv()
To fix this, go to config/bootstrap.php and remove the false from the Dotenv constructor: (new Dotenv(false))->loadEnv(dirname(DIR).'/.env'); to (new Dotenv())->loadEnv(dirname(DIR).'/.env'); See: https://github.com/symfony/symfony/issues/37195
Actually the file config/bootstrap.php has been removed from symfony 5.1 and was replaced in public/index.php.
But since the project was updated from an symfony 4 version the bootrap file is still present.
So another option would be to remove the boostrap file and update the project entirely to symfony 5.1 recipe. This is not trivial though as you can see in this corresponfing PullRequest.
In case you encounter this error with mysql and your docker-compose setup:
Unknown MySQL server host <mysql-service-name>
Code language:HTML, XML(xml)
… and you dont know why because everything seems to be correct.
Then you might have an upgrade problem with mysql because you are reusing an old volume that was created for another mysql version. This can happen when you use a unspecified tag as mysql:latest (not recommended anyway) and there was a version bump in the official mysql image. Or you upgraded the mysql container yourself, f.e. from mysql:5.6 to mysql:5.7 and you are reusing the data volume with the mysql files.
Living in an umlaut country like Germany umlaut domains are sometimes requested. But: Umlaut domains resp. Internationalized Domain Names (IDN) are problematic.
My main pain points were these:
Browsers tend to convert the unicode representations to ASCII Compatible Encoding (ACE) with punycode representations for security reasons when copying the url. So you will get a nice surprise when pasting the url somewhere:
Oxid eShop 6.2 is released and its a good step forward to a modernized codebase, embracing best practices and more symfony-like patterns.
Since i do a lot of coding with symfony besides OXID i was very exited about this new version. So i gave it a try and updated one of the shops i maintain. (Its not public yet, i will update this post once we launch, Its launched by now, yay: https://www.cafelehmitz-photobooks.com/).
Recently i wanted to use Sqlite with Adminer in Docker and it turned out to be not so easy. I actually thought i could just declare Adminer in a docker-compose.yml file with a volume mounted, similar as i would do for adminer with mysql.
But since Adminer is a popular hacking target they introduced a feature that does not allow to run adminer without a password, out of the box. Sqlite database usually runs without password and dang, workaround needed!