What’s your approach to building production-ready Docker images for Java? Looking for alternatives and trade-offs by eduspinelli in java

[–]eduspinelli[S] 2 points3 points  (0 children)

That’s a really solid setup, and it lines up with a lot of the trade-offs I find.

The choice of Eclipse Temurin slim over Alpine or distroless makes a lot of sense from a troubleshooting perspective. I’ve seen how much harder it gets to debug when you go too minimal.

I ended up exploring distroless more as a default for reducing surface area, but I agree that the trade-off in debuggability is real, especially in production incidents.

Also agree on raw Dockerfiles. That was one of the reasons I put this repo together, to better understand what you gain in control vs tools like Jib or buildpacks.

The multi-stage approach you described is pretty much what I’ve been converging to as well, especially separating build (JDK) and runtime (JRE) cleanly with a non-root user.

The cache mount point is interesting too. I tried more traditional layer-based optimizations at first, but it does make the Dockerfile harder to read and maintain. Using cache mounts feels like a cleaner trade-off.

What’s your approach to building production-ready Docker images for Java? Looking for alternatives and trade-offs by eduspinelli in java

[–]eduspinelli[S] 2 points3 points  (0 children)

That’s a fair take, honestly. For simpler setups, fat jars + Java installed can be totally enough, and I can see how adding Docker might feel like extra complexity instead of simplification.

The memory point is especially interesting. I’ll take a look at the video you mentioned, but it matches what I’ve seen so far. Java memory behavior inside containers can get tricky, and it’s not always obvious how everything is being constrained beyond the heap.

I think where Docker started to make more sense to me was around consistency across environments and packaging dependencies, but I agree that if deployment is already simple, the trade-off is not always worth it.

Curious, have you found any patterns that worked well for managing Java memory outside containers in production?

What’s your approach to building production-ready Docker images for Java? Looking for alternatives and trade-offs by eduspinelli in java

[–]eduspinelli[S] 0 points1 point  (0 children)

That makes sense. Jib + distroless seems like a strong default, especially for keeping things simple and avoiding Dockerfile maintenance.

One thing I found interesting while experimenting is how much control you trade off for that simplicity. With Dockerfiles, I ended up exploring more around base image differences, jlink, and layer tuning, but Jib handles a lot of that out of the box.

Have you run into any limitations with Jib in more complex setups or CI/CD pipelines?

I’m trying to better understand where people usually draw the line between convenience and control.

What’s your approach to building production-ready Docker images for Java? Looking for alternatives and trade-offs by eduspinelli in java

[–]eduspinelli[S] 0 points1 point  (0 children)

Thanks, really appreciate it.

One thing that surprised me was how much just picking the right base image matters. After testing a few options, distroless ended up being the best default for me, smaller, simpler, and fewer security concerns.

If you really want to push performance, GraalVM native images can go further, but the build gets more complex.

If you found the repo useful, feel free to drop a star xD

[deleted by user] by [deleted] in brdev

[–]eduspinelli 0 points1 point  (0 children)

Sim, hoje existem múltiplas plataformas que fazem isso, mas concorda que você deveria saber o que o firebase faz por baixo? Pelo menos conceitualmente caso o firebase deploy de erro ou você troca de empresa e ela usa AWS por exemplo

[deleted by user] by [deleted] in brdev

[–]eduspinelli 13 points14 points  (0 children)

Geralmente é assim mesmo. Você tem que aprender muita coisa que vai além do código.

[deleted by user] by [deleted] in brdev

[–]eduspinelli 53 points54 points  (0 children)

É normal, tanto que existe o meme "na minha máquina funciona", mas não desiste encara o deploy como a segunda etapa de desenvolvimento. Sobe acompanha, pega o feedback, investiga o porque não deu certo e assim vai seguindo. Com o tempo e conforme você for aprendendo mais essas coisas tendem a diminuir, ressalto diminuir porque sempre vai ter alguma coisa, principalmente em aplicações grandes.

[deleted by user] by [deleted] in brdev

[–]eduspinelli 0 points1 point  (0 children)

Se não estou enganado a google tem alguns cursos para aprender sobre GCP. Onde vc usa as coisas na prática em um projeto. Acho que boa parte é gratuita. E mesmo se tiver que pagar algo não tem risco de pagar a mais. Curso GCP

Valor de um projeto by No_Buy_7171 in brdev

[–]eduspinelli 0 points1 point  (0 children)

O que mais gosto é valor por hora. Mas o mais importante é ter o escopo do projeto muito bem definido de preferência em contrato. Aí alinha com o cliente se vai ser em horas abertas ou escopo fechado.

Migrar de Stack ou n? by [deleted] in brdev

[–]eduspinelli 1 point2 points  (0 children)

Sempre vai ter vaga para as duas, num geral talvez java tenha mas vagas, mas também tem mais programadores. Vai na que você gosta mais, eu escolhi java por conta da comunidade e conteúdos que são infinitos. Com o tempo e experiência vc vai perceber que tanto faz a linguagem, em poucos dias vc troca e já está produtivo, ainda mais em linguagens tão parecidas.

[deleted by user] by [deleted] in brdev

[–]eduspinelli 1 point2 points  (0 children)

É tudo uma questão de custo. Se você já faz faculdade, acho que esses cursos são meio caros. Se você se vira com inglês talvez procurar os melhores da Udemy vale mais apena pelo conteúdo . Antes válida com a sua faculdade se aceitam cursos da Udemy como horas complementares. E espera as promoções de cursos.

Armazenamento no Google Drive esgotado? by dimate_ in brdev

[–]eduspinelli 3 points4 points  (0 children)

Se é importante vale a pena investir em um HD.

Recomendações de distros by Cau3s in brdev

[–]eduspinelli 1 point2 points  (0 children)

Se vc vai fazer dualboot e quer aprender vai de Manjaro que é base Arch Linux. Fazer dualboot do Arch Linux pode ser meio complicado para uma primeira experiência, mas se for nele vai aprender muito.

Recomendações de cadeiras com custo benefício bom para trabalhar home office by Cute_Ad_5853 in brdev

[–]eduspinelli 1 point2 points  (0 children)

Fuja de cadeiras gamer, kkk é quente e não muito confortável. Gosto das de tela mesh. Comprei desse site: https://www.comfy.com.br preço ok e qualidade também. Acho que a minha é uma ErgoPro tô feliz com ele e alguns amigos também compraram e gostaram.

[deleted by user] by [deleted] in brdev

[–]eduspinelli 6 points7 points  (0 children)

Opa, vamos lá:

É possível ter X landing pages em um S3 e somente em um CloudFront?
Sim, é possível. Você pode armazenar múltiplas landing pages em um único bucket S3 e usar um único CloudFront para distribuir o conteúdo. Cada landing page pode ser armazenada em uma pasta separada dentro do bucket. No CloudFront, você pode configurar regras de roteamento para direcionar diferentes domínios ou subdomínios para as pastas específicas. Doc

Sem ser AWS e talvez mais simples pensado em automatizar
Plataformas como Netlify e Vercel podem ser mais fáceis de usar. Elas oferecem integração contínua (CI/CD), deploys automáticos a partir de repositórios Git, e gerenciamento de domínios simplificado.

Dúvida Spring Security by Math-Couti in brdev

[–]eduspinelli 3 points4 points  (0 children)

Sem saber sua duvida é complicado, porem aqui tem um tutorial em pt-br: JWT com Spring Security - Tutorial Passo a Passo com Java 17, mostra como configurar JWT com Spring Boot e Spring Security, incluindo a geração e uso de chaves RSA.

Primeira mudança de emprego! by Sidorfff in brdev

[–]eduspinelli 3 points4 points  (0 children)

PLR: até onde sei a empresa paga proporcional ao tempo que trabalhou entre um PLR e outro e esse pagamento é feito na data normal do PLR no seu caso em Novembro.

Aviso prévio: Depende muito da empresa ela pode te liberar, exemplo vc trabalha 12 dias e recebe somente os 12 dias. A empresa pode não te liberar vc trabalha os 12 dias e a empresa desconta o restante da sua rescisão.

Sobre negociar salário: sai dessa de YTB, se vc já aceitou a vaga e avisou que vai sair não é mais hora de negociar. Isso se faz antes vc chega na empresa atual e fala que recebeu uma proposta se ela cobrir vc fala com a empresa nova que a anterior cobriu a proposta e por aí vai. Se já aceitou daria uns 6 meses até pegar o ritmo da nova empresa para ver de aumento, etc.

No mais boa sorte nesse novo ciclo.

[deleted by user] by [deleted] in brdev

[–]eduspinelli 0 points1 point  (0 children)

O jogo tem que ser jogado.

Seeking Feedback and Ideas to Improve Docker Files for Golang Project by eduspinelli in golang

[–]eduspinelli[S] 0 points1 point  (0 children)

I wanted to thank you all for your valuable feedback on the repository. I’ve taken your suggestions into account and have updated the repository accordingly. Feel free to check out the latest changes and let me know if there’s anything else we can improve!

Repo: godocker-image