1
resposta

wait-for não recebe permissão de execução

Pessoal, tudo joia?

Estou passando por uma dificuldade e gostaria da ajuda de vocês, segui exatamenta os passos do curso mas quando executo o sudo docker-compose up dev , o container unleashed retorna "Exited(1)". Ao checar os logs, é específicado o seguinte erro:

/unleash/wait-for:3
# The MIT License (MIT)
^
SyntaxError: Invalid or unexpected token
    at Object.compileFunction (node:vm:360:18)
    at wrapSafe (node:internal/modules/cjs/loader:1084:15)
    at Module._compile (node:internal/modules/cjs/loader:1119:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
    at Module.load (node:internal/modules/cjs/loader:1033:32)
    at Function.Module._load (node:internal/modules/cjs/loader:868:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:22:47

Aparentemente o arquivo wait-for não tem permissão para execução, daí reforcei as permissões no meu repositório com chmod +x ./unleash-docker/wait-for e mesmo assim não funcionou.

Checando os arquivos no docker desktop, realmente o arquivo wait-for é copiado para dentro do container sem permissão:

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

Tentei enviar um comando de permissão via Docker RUN mas mesmo assim não funcionou. Alguém teria alguma idéia do que pode ser?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá Matheus, tudo bem?

Pelo que você descreveu, parece que o problema está relacionado com as permissões do arquivo wait-for quando ele é copiado para dentro do container. Mesmo que você tenha alterado as permissões no seu repositório local, essas permissões podem não estar sendo preservadas no processo de cópia para o container.

Uma possível solução que você pode tentar é especificar no seu Dockerfile um comando para alterar as permissões do arquivo wait-for depois que ele for copiado para dentro do container. Você pode fazer isso adicionando a seguinte linha no Dockerfile:

RUN chmod +x /caminho/para/o/wait-for

Certifique-se de substituir /caminho/para/o/wait-for pelo caminho real onde o arquivo wait-for está localizado dentro do seu container.

Outra coisa que você pode verificar é se o arquivo wait-for está sendo copiado corretamente e se o conteúdo dele é um script shell válido. O erro de SyntaxError: Invalid or unexpected token sugere que o Node.js está tentando executar o arquivo como se fosse um script JavaScript, o que não deveria acontecer se o wait-for for um script shell. Verifique se o primeiro cabeçalho do arquivo wait-for está correto, por exemplo, deve começar com #!/bin/sh ou #!/bin/bash se for um script shell.

Espero que essas sugestões ajudem a resolver o problema. Bons estudos!