■ 도커 컨테이너를 실행하는 방법을 보여준다. (파일 공유)
▶ 도커 명령
1 2 3 4 5 6 7 8 |
C:\>docker container run -it -v d:/ServiceRoot:c:/ServiceRoot --rm testconsole testconsole.exe "c:\ServiceRoot\TMP\TMP_DEV\ServiceHost\Data\20190222\JOBKEY0001\JOBKEY0001.json" ※ -v d:/ServiceRoot:c:/ServiceRoot : 호스트 디렉토리(d:/ServiceRoot)를 컨테이너 디렉토리(c:/ServiceRoot)로 사용한다. testconsole : <이미지>[:<태그명>] testconsole.exe "c:\ServiceRoot\TMP\TMP_DEV\ServiceHost\Data\20190222\JOBKEY0001\JOBKEY0001.json" : 실행 명령 |
▶ 호스트 디렉토리 구조
1 2 3 4 5 6 7 8 9 10 11 |
d:\ServiceRoot TMP TMP_DEV ServiceHost Data 20190222 JOBKEY0001 Source Result |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
using System; using System.IO; using Newtonsoft.Json; namespace TestConsole { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 실행하기 - Main(argumentArray) /// <summary> /// 프로그램 실행하기 /// </summary> /// <param name="argumentArray">인자 배열</param> private static void Main(string[] argumentArray) { #region 프로그램 인자를 조사한다. if(argumentArray == null || argumentArray.Length < 2) { Console.WriteLine("구성 파일 경로를 표시하는 인자를 지정해 주시기 바랍니다."); return; } #endregion #region 구성 파일 경로를 설정한다. string configurationFilePath = argumentArray[1].Trim(); Console.WriteLine("구성 파일 경로 : {0}", configurationFilePath); #endregion #region 구성 JSON 문자열을 설정한다. string configurationJSON = null; try { configurationJSON = File.ReadAllText(configurationFilePath); } catch(Exception exception) { Console.WriteLine("구성 파일 로드시 에러가 발생했습니다."); Console.WriteLine(exception.Message); return; } Console.WriteLine("구성 JSON 문자열"); Console.WriteLine("--------------------------------------------------"); Console.WriteLine(configurationJSON); Console.WriteLine("--------------------------------------------------"); #endregion #region 구성 객체를 설정한다. Configuration configuration = null; try { configuration = JsonConvert.DeserializeObject<Configuration>(configurationJSON); } catch(Exception exception) { Console.WriteLine("구성 객체 설정시 에러가 발생했습니다."); Console.WriteLine(exception.Message); return; } #endregion string sourceDirectoryPath = configuration.SourceDirectoryPath.Replace ( configuration.MappingSourceRootDirectoryPath, configuration.MappingTargetRootDirectoryPath ); string resultDirectoryPath = configuration.ResultDirectoryPath.Replace ( configuration.MappingSourceRootDirectoryPath, configuration.MappingTargetRootDirectoryPath ); Console.WriteLine("소스 디렉토리 경로 : {0}", sourceDirectoryPath); Console.WriteLine("결과 디렉토리 경로 : {0}", resultDirectoryPath); string sourceMessageFilePath = Path.Combine(sourceDirectoryPath, "SourceMessage.dat"); string resultMessageFilePath = Path.Combine(resultDirectoryPath, "ResultMessage.dat"); Console.WriteLine("소스 메시지 파일 경로 : {0}", sourceMessageFilePath); Console.WriteLine("결과 메시지 파일 경로 : {0}", resultMessageFilePath); #region 결과 메시지 파일이 존재하는 경우 삭제한다. if(File.Exists(resultMessageFilePath)) { File.SetAttributes(resultMessageFilePath, FileAttributes.Normal); File.Delete(resultMessageFilePath); } #endregion File.Copy(sourceMessageFilePath, resultMessageFilePath); } #endregion } } |
TestConsole.zip
ServiceRoot.zip