Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[DUVIDA] erro ao tentar rodar docker-compose: services.volumes Additional property mysql-data is not allowed

olá, quando tento rodar o comando "docker-compose up -d" da o seguinte erro, tanto localmente quanto no servidor ec2:

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

faz umas semanas que conclui o curso e nao lembro se estou pulando algo, fiz umas refatorações no projeto e subi novamente no docker hub e agora ao tentar rodar o comando acontece isso.

4 respostas

Oi!

Talvez tenha algum erro no docker-compose.yml. Manda ele aqui.

Oi Rodrigo, segue o DockerFile, docker-compose e o nginx.

docker-compose.yml

version: '3'
services:
  mysql:
    image: mysql:8.0.36
    env_file: ./env/mysql.env
    volumes:
      - ./mysql-data:/var/lib/mysql
    restart: unless-stopped
    healthcheck:
      test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
      interval: 5s
      timeout: 5s
      retries: 10

  app:
    image: eliascastrosousa/sgb:latest
    env_file: ./env/app.env
    restart: unless-stopped
    depends_on:
      mysql:
        condition: service_healthy

  nginx:
    image: nginx:stable-alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx:/etc/nginx/conf.d
    restart: unless-stopped
    depends_on:
      - app

  volumes:
    mysql-data:

Dockerfile

FROM eclipse-temurin:21-jdk-alpine as builder
WORKDIR application
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src
RUN ./mvnw package -DskipTests
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract


FROM eclipse-temurin:21-jre-alpine
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]

nginx.conf

server {
    listen 80;
    server_name app;

    location / {
        proxy_pass http://app:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
            

obs: esse projeto "sgb" é muito similar ao da clinica vollmed, com crud de alunos, livros e emprestimo. usei a base do projeto para fazer esse para portfolio.

solução!

Acho que o problema é no docker-compose.yml, no final do arquivo, nessa parte:

  volumes:
    mysql-data:

Acho que está com indentação incorreta e por isso deu erro. Essa seção volumes não deve ficar dentro da seção services. Remova a indentenção que deve resolver.

Valeu Rodrigo, deu certo! muito obrigado.