1
resposta

Docker com Java e MySQL

Olá, boa tarde!

No final do curso teve algumas partes que ficou confuso, foi usado o nginx como servidor para rodar as aplicações duplicadas, mas se eu criasse um ambiente abaixo:

  • Aplicação Java: que faz consultas em um BD;
  • Banco de dados: possuindo os dados que serão consultados.

neste caso, vou precisar disso:

  • java.dockerfile: imagem tirada do docker hub possuindo o openjdk;
  • mysql.dockerfile: imagem tirada do docker hub possuindo o MySql.

Como eu quero rodar os dois ao mesmo tempo vou usar o docker-compose.yml, criando uma network ligando os dois containers e assim rodaria a minha aplicação ?

O Banco de dados, não precisa de drive ?

Se eu for usar uma imagem, como ficaria esta classe:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Quando você utilizar mais de um serviço sem dúvidas docker-compose vai te ajudar. Nesse caso, ele cria uma rede por padrão, uma conexão na qual somente os serviços declarados no docker-compose.yml terão acesso. Por exemplo, para o seguinte docker-compose.yml.

version: '3.8'

services:
  app:
    container_name: app-python3
    image: guilhermercarvalho/app
    build:
      context: ..
      dockerfile: .devcontainer/Dockerfile
      args:
        VARIANT: 3-bullseye
        NODE_VERSION: "14"
    volumes:
      - ..:/workspace:cached
    depends_on:
      - database
    command: sleep infinity

  database:
    container_name: db-psql
    image: postgres:14-alpine3.14
    env_file:
      - .env/db.env
    restart: unless-stopped

Eu tenho um container com a minha aplicação python (app) e outro com o meu banco de dados PostgreSQL (database), é então criado a rede: technical-test-openweather_devcontainer_default

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O docker possuiu um serviço de DNS interno que permite o acesso dos serviços pelo nome do serviço definido no docker-compose. No meu exemplo, se fosse uma conexão JDBC a URL de conexão seria jdbc:postgresql://database/test. Pois o HOST seria database.

Espero ter ajudado.