package main
import (
"fmt"
"log"
"os"
"os/exec"
"time"
)
func main() {
if len(os.Args) != 2 {
os.Exit(1)
}
logFilePath := os.Args[1]
log.Println("Reading " + logFilePath)
cmd := exec.Command( "tail", "-n 20", logFilePath)
stdout, err := cmd.CombinedOutput()
if err != nil {
log.Fatal("failed to Start: " + err.Error())
} else {
fmt.Printf("Started pid=%d\n" , cmd.Process.Pid)
fmt.Printf(string(stdout))
time.Sleep(1000 * time.Millisecond)
}
}
./example /etc/alpine-release
failed to Start: exit status 1
./example /etc/lsb-release
2021/01/24 22:16:59 Reading /etc/lsb-release
Started pid=18425
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
IMAGE=basic-go-run
docker build -t $IMAGE -f Dockerfile.run .
docker run -v /etc:/tmp/etc -it $IMAGE /usr/bin/tail -f /tmp/etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"
docker run -v /etc:/tmp/etc -it $IMAGE /example /tmp/etc/lsb-release
2021/01/24 21:27:03 Reading /tmp/etc/lsb-release
2021/01/24 21:27:03 failed to Start: exit status 1
docker run --name $NAME -it $IMAGE sh
копируйте файл руками из контейнера где собрано приложение на хост docker cp $NAME:/$FILE .
и с хоста на контейнер выполнения ( docker cp $FILE $NAME:/app
) и запустите в шелле если ошибка повторится отлаживайте там ( у меня был плохой базовый образ) (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) &