Правда в том, что даже если мы используем -u 1000 для запуска docker, если путь тома хоста не существует, путь будет создан root пользователем (который запускает docker), и если контейнер внутренним пользователем является uid: 1000, тогда запись на том будет завершена без разрешения.
В настоящее время я решаю эту проблему путем создания пути к первому тому с использованием uid: 1000.
Знаете ли вы, почему Это случилось? И есть ли у вас более официальный или лучший способ справиться с этим?
Пожалуйста, просмотрите сообщение об ошибке:
[go] Task: bash -c "docker run -e JAVA_OPTS=\"-DapiKey=$apiKey -Drate=1 -Dduration=5\" -i --rm -v `pwd`/perf/gatling:/home/gatling/gatling/user-files -v `pwd`/perf/gatling/results:/home/gatling/gatling/results -u 1000:1000 yayayahei/gatling -s defaultTest"took: 22.311sexited: 1
GATLING_HOME is set to /home/gatling/gatling
Simulation defaultTest started...
02:20:31.813 [ERROR] i.g.c.s.w.LogFileDataWriter - DataWriter failed to initialize
java.nio.file.AccessDeniedException: /home/gatling/gatling/results/****---20200429022030398
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
at java.nio.file.Files.createDirectory(Files.java:674)
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
at java.nio.file.Files.createDirectories(Files.java:767)
at io.gatling.commons.util.PathHelper$RichPath$.mkdirs$extension(PathHelper.scala:48)
at io.gatling.core.config.GatlingFiles$.simulationLogDirectory(GatlingFiles.scala:48)
at io.gatling.core.stats.writer.BufferedFileChannelWriter$.apply(LogFileDataWriter.scala:41)
at io.gatling.core.stats.writer.LogFileDataWriter.onInit(LogFileDataWriter.scala:297)
at io.gatling.core.stats.writer.LogFileDataWriter.onInit(LogFileDataWriter.scala:291)
at io.gatling.core.stats.writer.DataWriter$$anonfun$1.applyOrElse(DataWriter.scala:47)
at io.gatling.core.stats.writer.DataWriter$$anonfun$1.applyOrElse(DataWriter.scala:43)
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
at akka.actor.FSM.processEvent(FSM.scala:707)
at akka.actor.FSM.processEvent$(FSM.scala:704)
at io.gatling.core.stats.writer.DataWriter.processEvent(DataWriter.scala:29)
at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701)
at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695)
at akka.actor.Actor.aroundReceive(Actor.scala:539)
at akka.actor.Actor.aroundReceive$(Actor.scala:537)
at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:25)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:612)
at akka.actor.ActorCell.invoke(ActorCell.scala:581)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268)
at akka.dispatch.Mailbox.run(Mailbox.scala:229)
at akka.dispatch.Mailbox.exec(Mailbox.scala:241)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)