/// <summary> /// Creates a <see cref="FileSystemXmlRepository"/> with keys stored at the given directory. /// </summary> /// <param name="directory">The directory in which to persist key material.</param> /// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param> public FileSystemXmlRepository(DirectoryInfo directory, ILoggerFactory loggerFactory) { Directory = directory ?? throw new ArgumentNullException(nameof(directory)); _logger = loggerFactory.CreateLogger <FileSystemXmlRepository>(); try { if (ContainerUtils.IsContainer && !ContainerUtils.IsVolumeMountedFolder(Directory)) { // warn users that keys may be lost when running in docker without a volume mounted folder _logger.UsingEphemeralFileSystemLocationInContainer(Directory.FullName); } } catch (Exception ex) { // Treat exceptions as non-fatal when attempting to detect docker. // These might occur if fstab is an unrecognized format, or if there are other unusual // file IO errors. _logger.LogTrace(ex, "Failure occurred while attempting to detect docker."); } }