1
resposta

Erro ao iniciar docker-compose up --build

como resolver o problema da porta 3306 em uso quais arquivos alterar no projeto? Os comandos da aula não resolvem.

--> no terminal do ubuntu <-- Image for service app was built because it did not already exist. To rebuild this image you must use docker-compose build or docker-compose up --build. for 3156-curso-2-appsec_db_1 Cannot start service db: driver failed programming external connectivity on endpoint 3156-curso-2-appsec_db_1 (419acbc27ab108381ef6483fb6f2c64d235cde959dc607eaebe64260b2c422c9): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use

--> no terminal do vscode <-- clairton@clairton-VirtualBox:~/3156-Curso-2-AppSec$ docker-compose up Starting a2746cdec11c_3156-curso-2-appsec_db_1 ... 3156-curso-2-appsec_redis_1 is up-to-date Starting a2746cdec11c_3156-curso-2-appsec_db_1 ... error

ERROR: for a2746cdec11c_3156-curso-2-appsec_db_1 Cannot start service db: driver failed programming external connectivity on endpoint a2746cdec11c_3156-curso-2-appsec_db_1 (767f9732335ca486db88314cf1e28ef5ed1ca929bdb31b585d2573ce897d219d): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use

ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint a2746cdec11c_3156-curso-2-appsec_db_1 (767f9732335ca486db88314cf1e28ef5ed1ca929bdb31b585d2573ce897d219d): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use ERROR: Encountered errors while bringing up the project. clairton@clairton-VirtualBox:~/3156-Curso-2-AppSec$ sudo lsof -i :3306 sudo: The "no new privileges" flag is set, which prevents sudo from running as root. sudo: If sudo is running in a container, you may need to adjust the container configuration to disable the flag.

1 resposta

Olá Clairton.

Tudo bem?

Pelo que entendi, você está enfrentando um problema com a porta 3306 já estar em uso quando tenta iniciar seus serviços com o Docker Compose. Isso é uma situação comum quando já existe um serviço, como um servidor MySQL, rodando nessa porta no seu sistema.

Para resolver esse problema, você tem algumas opções:

  1. Parar o serviço que está usando a porta 3306: Se você não precisa do serviço que está atualmente usando a porta 3306, você pode pará-lo. No Ubuntu, você pode encontrar o serviço com o comando sudo lsof -i :3306 e então pará-lo usando sudo service nome_do_servico stop.

  2. Alterar a porta do MySQL no Docker Compose: Você pode mudar a porta que o MySQL dentro do seu container Docker usa para se comunicar com o mundo externo. Para isso, você precisa editar o arquivo docker-compose.yml que está no seu projeto. Você deve encontrar uma seção para o serviço do banco de dados (provavelmente chamado db) e mudar a porta de 3306 para outra, por exemplo, 3307. Aqui está um exemplo de como poderia ser essa configuração:

    services:
      db:
        image: mysql
        environment:
          MYSQL_ROOT_PASSWORD: sua_senha
        ports:
          - "3307:3306"
    

    Isso mapeia a porta 3306 dentro do container para a porta 3307 no seu host.

  3. Configurar o MySQL para usar outra porta: Se o serviço que está usando a porta 3306 é um servidor MySQL que você precisa que continue rodando, você pode configurar esse MySQL para usar outra porta. Isso geralmente é feito no arquivo de configuração do MySQL (my.cnf), onde você pode mudar a linha port = 3306 para port = 3307.

Após realizar qualquer uma dessas alterações, tente rodar novamente o comando docker-compose up. Lembre-se de ajustar também qualquer configuração no seu projeto que se conecte ao MySQL para usar a nova porta, se você mudou a porta que o MySQL usa.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software