diff --git a/simonov_nikita_lab_2/.idea/.gitignore b/simonov_nikita_lab_2/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/simonov_nikita_lab_2/.idea/misc.xml b/simonov_nikita_lab_2/.idea/misc.xml new file mode 100644 index 0000000..a818314 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/modules.xml b/simonov_nikita_lab_2/.idea/modules.xml new file mode 100644 index 0000000..cee9423 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/modules.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/simonov_nikita_lab2.iml b/simonov_nikita_lab_2/.idea/simonov_nikita_lab2.iml new file mode 100644 index 0000000..160cdf9 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/simonov_nikita_lab2.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/0/3/03a92d5d92427ae83731739f82560657bd7e1d33 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/0/3/03a92d5d92427ae83731739f82560657bd7e1d33 new file mode 100644 index 0000000..9377de0 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/0/3/03a92d5d92427ae83731739f82560657bd7e1d33 @@ -0,0 +1,11 @@ + +W +java:S1141"5Extract this nested try block into a separate method.(81 +c +java:S1075"ARefactor your code to get this URI from a customizable parameter.(ٞ8ꮗ1 +c +java:S1075"ARefactor your code to get this URI from a customizable parameter.(8ꮗ1 +@ java:S106-"+Replace this use of System.out by a logger.( +@ java:S106."+Replace this use of System.out by a logger.(㆛ +E java:S106/"+Replace this use of System.out by a logger.( +E java:S1061"+Replace this use of System.out by a logger.( \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/3/5/35b8c13cf2eb2a194eada000eb310d65aed53b2a b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/3/5/35b8c13cf2eb2a194eada000eb310d65aed53b2a new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/5/0/502eff2775ccdc92a339926170a76685b0db195b b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/5/0/502eff2775ccdc92a339926170a76685b0db195b new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/6/b/6b3c7820a55d6a07cc9d46efa42c98ebf1f45354 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/6/b/6b3c7820a55d6a07cc9d46efa42c98ebf1f45354 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/7/a/7a3b22c128c191dcaf132b29cd87547571c08e36 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/7/a/7a3b22c128c191dcaf132b29cd87547571c08e36 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/8/3/83ed28ddb28df8a1891a8bb18462429f6bf9c67a b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/8/3/83ed28ddb28df8a1891a8bb18462429f6bf9c67a new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/9/2/92c4d1ca65baa16d74df9bf3d5b6393a87742c07 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/9/2/92c4d1ca65baa16d74df9bf3d5b6393a87742c07 new file mode 100644 index 0000000..92faf16 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/9/2/92c4d1ca65baa16d74df9bf3d5b6393a87742c07 @@ -0,0 +1,13 @@ + +W +java:S1141"5Extract this nested try block into a separate method.(8ɞ1 +c +java:S1075"ARefactor your code to get this URI from a customizable parameter.(ٞ8ɞ1 +U +java:S1481"3Remove this unused "sourceFilePath" local variable.(ٞ8ɞ1 +c +java:S1075"ARefactor your code to get this URI from a customizable parameter.(8ɞ1 +c +java:S1075"ARefactor your code to get this URI from a customizable parameter.(8ɞ1 +G java:S106*"+Replace this use of System.out by a logger.(8ɞ1 +L java:S106+"+Replace this use of System.out by a logger.(힃8ɞ1 \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/9/4/94c92b7b02fdd2531b355bac9c83b9f486abe86c b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/9/4/94c92b7b02fdd2531b355bac9c83b9f486abe86c new file mode 100644 index 0000000..b3ad7ab --- /dev/null +++ b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/9/4/94c92b7b02fdd2531b355bac9c83b9f486abe86c @@ -0,0 +1,3 @@ + +L java:S106"+Replace this use of System.out by a logger.(Λ81 +L java:S106 "+Replace this use of System.out by a logger.(81 \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/a/4/a44778d2018213866a7c7700d98e9b5a0c8bb0d7 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/a/4/a44778d2018213866a7c7700d98e9b5a0c8bb0d7 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/a/d/adb97326bef634ca60e90d62c3e817831b0e62ad b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/a/d/adb97326bef634ca60e90d62c3e817831b0e62ad new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/d/1/d1d02446e29911114aa8461a6d339c8a9b233292 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/d/1/d1d02446e29911114aa8461a6d339c8a9b233292 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/d/e/de9026ba42f1709def40029bb15d3a5c09210226 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/d/e/de9026ba42f1709def40029bb15d3a5c09210226 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/6/e69c92c782a7aaf8d0c509cb120e1ead92c1002a b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/6/e69c92c782a7aaf8d0c509cb120e1ead92c1002a new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/c/ec82235829a15dc40a553c3fb4b789f1198f4425 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/c/ec82235829a15dc40a553c3fb4b789f1198f4425 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/d/ed0d20f6dbf0bbada896a9094ff70ec66340a7a2 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/d/ed0d20f6dbf0bbada896a9094ff70ec66340a7a2 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/e/ee36fd8c882eeb7d494b394d46fbdb34cd105ba9 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/e/e/ee36fd8c882eeb7d494b394d46fbdb34cd105ba9 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/f/4/f4cf0185d9befba3e1246fec6ecc3fb42d5b2f98 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/f/4/f4cf0185d9befba3e1246fec6ecc3fb42d5b2f98 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/f/b/fbfd3efcc3c334f991162df3f9840f75dd4ac2b6 b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/f/b/fbfd3efcc3c334f991162df3f9840f75dd4ac2b6 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/issuestore/index.pb b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/index.pb new file mode 100644 index 0000000..881929a --- /dev/null +++ b/simonov_nikita_lab_2/.idea/sonarlint/issuestore/index.pb @@ -0,0 +1,39 @@ + +Z +*worker-2/src/FindingLargestNumberFile.java,0\3\03a92d5d92427ae83731739f82560657bd7e1d33 +C +worker-1/Dockerfile,e\6\e69c92c782a7aaf8d0c509cb120e1ead92c1002a +C +worker-2/Dockerfile,8\3\83ed28ddb28df8a1891a8bb18462429f6bf9c67a +F +data/awdafgergssdf.txt,a\4\a44778d2018213866a7c7700d98e9b5a0c8bb0d7 +C +data/sgeagfdsfh.txt,e\e\ee36fd8c882eeb7d494b394d46fbdb34cd105ba9 +? +data/sdfwef.txt,e\c\ec82235829a15dc40a553c3fb4b789f1198f4425 +V +&worker-1/src/FindShortestFileName.java,9\4\94c92b7b02fdd2531b355bac9c83b9f486abe86c +9 + README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +B +docker-compose.yml,3\5\35b8c13cf2eb2a194eada000eb310d65aed53b2a +S +#worker-3/src/CheckingTheResult.java,9\2\92c4d1ca65baa16d74df9bf3d5b6393a87742c07 +C +worker-3/Dockerfile,6\b\6b3c7820a55d6a07cc9d46efa42c98ebf1f45354 +E +worker-3/worker-2.iml,5\0\502eff2775ccdc92a339926170a76685b0db195b += + service1.yaml,d\e\de9026ba42f1709def40029bb15d3a5c09210226 += + service2.yaml,f\b\fbfd3efcc3c334f991162df3f9840f75dd4ac2b6 += + service3.yaml,d\1\d1d02446e29911114aa8461a6d339c8a9b233292 +C +worker-3/.gitignore,e\d\ed0d20f6dbf0bbada896a9094ff70ec66340a7a2 +G +result/check_result.txt,7\a\7a3b22c128c191dcaf132b29cd87547571c08e36 +A +result/result.txt,f\4\f4cf0185d9befba3e1246fec6ecc3fb42d5b2f98 +? +result/data.txt,a\d\adb97326bef634ca60e90d62c3e817831b0e62ad \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/0/3/03a92d5d92427ae83731739f82560657bd7e1d33 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/0/3/03a92d5d92427ae83731739f82560657bd7e1d33 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/3/5/35b8c13cf2eb2a194eada000eb310d65aed53b2a b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/3/5/35b8c13cf2eb2a194eada000eb310d65aed53b2a new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/5/0/502eff2775ccdc92a339926170a76685b0db195b b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/5/0/502eff2775ccdc92a339926170a76685b0db195b new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/6/b/6b3c7820a55d6a07cc9d46efa42c98ebf1f45354 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/6/b/6b3c7820a55d6a07cc9d46efa42c98ebf1f45354 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/7/a/7a3b22c128c191dcaf132b29cd87547571c08e36 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/7/a/7a3b22c128c191dcaf132b29cd87547571c08e36 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/8/3/83ed28ddb28df8a1891a8bb18462429f6bf9c67a b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/8/3/83ed28ddb28df8a1891a8bb18462429f6bf9c67a new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/9/2/92c4d1ca65baa16d74df9bf3d5b6393a87742c07 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/9/2/92c4d1ca65baa16d74df9bf3d5b6393a87742c07 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/9/4/94c92b7b02fdd2531b355bac9c83b9f486abe86c b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/9/4/94c92b7b02fdd2531b355bac9c83b9f486abe86c new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/a/4/a44778d2018213866a7c7700d98e9b5a0c8bb0d7 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/a/4/a44778d2018213866a7c7700d98e9b5a0c8bb0d7 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/a/d/adb97326bef634ca60e90d62c3e817831b0e62ad b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/a/d/adb97326bef634ca60e90d62c3e817831b0e62ad new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/d/1/d1d02446e29911114aa8461a6d339c8a9b233292 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/d/1/d1d02446e29911114aa8461a6d339c8a9b233292 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/d/e/de9026ba42f1709def40029bb15d3a5c09210226 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/d/e/de9026ba42f1709def40029bb15d3a5c09210226 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/6/e69c92c782a7aaf8d0c509cb120e1ead92c1002a b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/6/e69c92c782a7aaf8d0c509cb120e1ead92c1002a new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/c/ec82235829a15dc40a553c3fb4b789f1198f4425 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/c/ec82235829a15dc40a553c3fb4b789f1198f4425 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/d/ed0d20f6dbf0bbada896a9094ff70ec66340a7a2 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/d/ed0d20f6dbf0bbada896a9094ff70ec66340a7a2 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/e/ee36fd8c882eeb7d494b394d46fbdb34cd105ba9 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/e/e/ee36fd8c882eeb7d494b394d46fbdb34cd105ba9 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/f/4/f4cf0185d9befba3e1246fec6ecc3fb42d5b2f98 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/f/4/f4cf0185d9befba3e1246fec6ecc3fb42d5b2f98 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/f/b/fbfd3efcc3c334f991162df3f9840f75dd4ac2b6 b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/f/b/fbfd3efcc3c334f991162df3f9840f75dd4ac2b6 new file mode 100644 index 0000000..e69de29 diff --git a/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/index.pb b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/index.pb new file mode 100644 index 0000000..a5126dc --- /dev/null +++ b/simonov_nikita_lab_2/.idea/sonarlint/securityhotspotstore/index.pb @@ -0,0 +1,39 @@ + +C +worker-1/Dockerfile,e\6\e69c92c782a7aaf8d0c509cb120e1ead92c1002a +C +worker-2/Dockerfile,8\3\83ed28ddb28df8a1891a8bb18462429f6bf9c67a +Z +*worker-2/src/FindingLargestNumberFile.java,0\3\03a92d5d92427ae83731739f82560657bd7e1d33 +F +data/awdafgergssdf.txt,a\4\a44778d2018213866a7c7700d98e9b5a0c8bb0d7 +? +data/sdfwef.txt,e\c\ec82235829a15dc40a553c3fb4b789f1198f4425 +C +data/sgeagfdsfh.txt,e\e\ee36fd8c882eeb7d494b394d46fbdb34cd105ba9 +B +docker-compose.yml,3\5\35b8c13cf2eb2a194eada000eb310d65aed53b2a +V +&worker-1/src/FindShortestFileName.java,9\4\94c92b7b02fdd2531b355bac9c83b9f486abe86c +9 + README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +C +worker-3/Dockerfile,6\b\6b3c7820a55d6a07cc9d46efa42c98ebf1f45354 +S +#worker-3/src/CheckingTheResult.java,9\2\92c4d1ca65baa16d74df9bf3d5b6393a87742c07 += + service1.yaml,d\e\de9026ba42f1709def40029bb15d3a5c09210226 += + service2.yaml,f\b\fbfd3efcc3c334f991162df3f9840f75dd4ac2b6 += + service3.yaml,d\1\d1d02446e29911114aa8461a6d339c8a9b233292 +E +worker-3/worker-2.iml,5\0\502eff2775ccdc92a339926170a76685b0db195b +C +worker-3/.gitignore,e\d\ed0d20f6dbf0bbada896a9094ff70ec66340a7a2 +G +result/check_result.txt,7\a\7a3b22c128c191dcaf132b29cd87547571c08e36 +A +result/result.txt,f\4\f4cf0185d9befba3e1246fec6ecc3fb42d5b2f98 +? +result/data.txt,a\d\adb97326bef634ca60e90d62c3e817831b0e62ad \ No newline at end of file diff --git a/simonov_nikita_lab_2/.idea/uiDesigner.xml b/simonov_nikita_lab_2/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/simonov_nikita_lab_2/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/README.md b/simonov_nikita_lab_2/README.md new file mode 100644 index 0000000..00b264e --- /dev/null +++ b/simonov_nikita_lab_2/README.md @@ -0,0 +1,117 @@ +# Лабораторная работа №2 + +Цель: изучение техники создания простого распределенного приложения. + +Задачи: + +- Согласно вышему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго. +- Изучить файлы сборки образов docker и разработать их для созданных приложений. +- Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы. +- Правильно закоммитить результат без лишних файлов. +- Оформить pull request по правилам и отправить его на проверку. + +# Разработка двух приложений + +Вариант первого приложения(worker-1): 5 - Ищет в каталоге /var/data файл с самым коротким названием и перекладывает его в /var/result/data.txt +Вариант второго приложения(worker-2): 1 - Ищет набольшее число из файла /var/data/data.txt и сохраняет его вторую степень в /var/result/result.txt + +## Структура проекта + +![](/screens/Screenshot_1.png) + +# Работа программы + +- Создание двух директорий: worker-1 и worker-2 для реализаций двух программ. +- Описание Dockerfile для создания образов для обоих программ. + +## Docker файл для первого сервиса + +```yml +# Используем образ с Java +FROM openjdk:21 + +# Создаем директории для данных и результата внутри контейнера +RUN mkdir /var/data +RUN mkdir /var/result + +# Создаем директорию приложения внутри контейнера +WORKDIR /app + +# Копируем исходные файлы вашего Java-приложения внутрь контейнера +COPY src /app/src + +# Компилируем Java-код +RUN javac /app/src/FindShortestFileName.java + +# Запускаем Java-приложение +CMD ["java", "-cp", "/app/src", "FindShortestFileName"] +``` + +## Docker файл для второго сервиса + +```yml +# Используем образ с Java +FROM openjdk:21 + + # Создаем директории для данных и результата внутри контейнера +RUN mkdir /var/data +RUN mkdir /var/result + + # Создаем директорию приложения внутри контейнера +WORKDIR /app + + # Копируем исходные файлы вашего Java-приложения внутрь контейнера +COPY src /app/src + +Компилируем Java-код +RUN javac /app/src/FindingLargestNumberFile.java + + # Запускаем Java-приложение +CMD ["java", "-cp", "/app/src", "FindingLargestNumberFile"] +``` + +## Docker-compose + +```yml +services: + worker-1: + build: + context: /worker-1 + dockerfile: Dockerfile + volumes: + - D:\рил\simonov_nikita_lab_2\data:/var/data + - D:\рил\simonov_nikita_lab_2\result:/var/result + worker-2: + build: + context: /worker-2 + dockerfile: Dockerfile + volumes: + - D:\рил\simonov_nikita_lab_2\data:/var/data + - D:\рил\simonov_nikita_lab_2\result:/var/result + depends_on: + - worker-1 +``` + +## Исходные файлы + +![](/screens/Screenshot_5.png) + +## После запуска контейнера создаются файлы `data.txt` и `result.txt`: + +![](/screens/Screenshot_2.png) + +- `data.txt` + +![](/screens/Screenshot_3.png) + +- `result.txt` + +![](/screens/Screenshot_4.png) + +# Запушенный контейнер + +![](/screens/Screenshot_6.png) + +# Ссылка на видео + +https://drive.google.com/file/d/1kPXcYOX0bRmjzBbg8GBWp0JfFWb2rUGm/view?usp=sharing diff --git a/simonov_nikita_lab_2/data/Shugar_Dady.txt b/simonov_nikita_lab_2/data/Shugar_Dady.txt new file mode 100644 index 0000000..229a860 --- /dev/null +++ b/simonov_nikita_lab_2/data/Shugar_Dady.txt @@ -0,0 +1,9 @@ +44 +65 +23 +90 +98 +65 +32 +87 + diff --git a/simonov_nikita_lab_2/data/Uncle_Bob.txt b/simonov_nikita_lab_2/data/Uncle_Bob.txt new file mode 100644 index 0000000..abdfc63 --- /dev/null +++ b/simonov_nikita_lab_2/data/Uncle_Bob.txt @@ -0,0 +1,8 @@ +12 +34 +56 +13 +11 +6 +4 +7 \ No newline at end of file diff --git a/simonov_nikita_lab_2/data/other_mom.txt b/simonov_nikita_lab_2/data/other_mom.txt new file mode 100644 index 0000000..df6c9b1 --- /dev/null +++ b/simonov_nikita_lab_2/data/other_mom.txt @@ -0,0 +1,11 @@ +67 +23 +56 +89 +1 +48 +44 +90 +12 +32 +78 diff --git a/simonov_nikita_lab_2/docker-compose.yml b/simonov_nikita_lab_2/docker-compose.yml new file mode 100644 index 0000000..ff14c10 --- /dev/null +++ b/simonov_nikita_lab_2/docker-compose.yml @@ -0,0 +1,17 @@ +services: + worker-1: + build: + context: /worker-1 + dockerfile: Dockerfile + volumes: + - D:\рил\simonov_nikita_lab_2\data:/var/data + - D:\рил\simonov_nikita_lab_2\result:/var/result + worker-2: + build: + context: /worker-2 + dockerfile: Dockerfile + volumes: + - D:\рил\simonov_nikita_lab_2\data:/var/data + - D:\рил\simonov_nikita_lab_2\result:/var/result + depends_on: + - worker-1 \ No newline at end of file diff --git a/simonov_nikita_lab_2/result/data.txt b/simonov_nikita_lab_2/result/data.txt new file mode 100644 index 0000000..df6c9b1 --- /dev/null +++ b/simonov_nikita_lab_2/result/data.txt @@ -0,0 +1,11 @@ +67 +23 +56 +89 +1 +48 +44 +90 +12 +32 +78 diff --git a/simonov_nikita_lab_2/result/result.txt b/simonov_nikita_lab_2/result/result.txt new file mode 100644 index 0000000..78452b4 --- /dev/null +++ b/simonov_nikita_lab_2/result/result.txt @@ -0,0 +1 @@ +8100.0 \ No newline at end of file diff --git a/simonov_nikita_lab_2/screens/Screenshot_1.png b/simonov_nikita_lab_2/screens/Screenshot_1.png new file mode 100644 index 0000000..31ea6de Binary files /dev/null and b/simonov_nikita_lab_2/screens/Screenshot_1.png differ diff --git a/simonov_nikita_lab_2/screens/Screenshot_2.png b/simonov_nikita_lab_2/screens/Screenshot_2.png new file mode 100644 index 0000000..2b68d66 Binary files /dev/null and b/simonov_nikita_lab_2/screens/Screenshot_2.png differ diff --git a/simonov_nikita_lab_2/screens/Screenshot_3.png b/simonov_nikita_lab_2/screens/Screenshot_3.png new file mode 100644 index 0000000..f20b2db Binary files /dev/null and b/simonov_nikita_lab_2/screens/Screenshot_3.png differ diff --git a/simonov_nikita_lab_2/screens/Screenshot_4.png b/simonov_nikita_lab_2/screens/Screenshot_4.png new file mode 100644 index 0000000..df6a6b3 Binary files /dev/null and b/simonov_nikita_lab_2/screens/Screenshot_4.png differ diff --git a/simonov_nikita_lab_2/screens/Screenshot_5.png b/simonov_nikita_lab_2/screens/Screenshot_5.png new file mode 100644 index 0000000..122f89b Binary files /dev/null and b/simonov_nikita_lab_2/screens/Screenshot_5.png differ diff --git a/simonov_nikita_lab_2/screens/Screenshot_6.png b/simonov_nikita_lab_2/screens/Screenshot_6.png new file mode 100644 index 0000000..02e529a Binary files /dev/null and b/simonov_nikita_lab_2/screens/Screenshot_6.png differ diff --git a/simonov_nikita_lab_2/worker-1/.gitignore b/simonov_nikita_lab_2/worker-1/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-1/.idea/.gitignore b/simonov_nikita_lab_2/worker-1/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/simonov_nikita_lab_2/worker-1/.idea/misc.xml b/simonov_nikita_lab_2/worker-1/.idea/misc.xml new file mode 100644 index 0000000..07115cd --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-1/.idea/modules.xml b/simonov_nikita_lab_2/worker-1/.idea/modules.xml new file mode 100644 index 0000000..98d26e9 --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-1/Dockerfile b/simonov_nikita_lab_2/worker-1/Dockerfile new file mode 100644 index 0000000..06c62f8 --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/Dockerfile @@ -0,0 +1,18 @@ +# Используем образ с Java +FROM openjdk:21 + +# Создаем директории для данных и результата внутри контейнера +RUN mkdir /var/data +RUN mkdir /var/result + +# Создаем директорию приложения внутри контейнера +WORKDIR /app + +# Копируем исходные файлы вашего Java-приложения внутрь контейнера +COPY src /app/src + +# Компилируем Java-код +RUN javac /app/src/FindShortestFileName.java + +# Запускаем Java-приложение +CMD ["java", "-cp", "/app/src", "FindShortestFileName"] diff --git a/simonov_nikita_lab_2/worker-1/src/FindShortestFileName.java b/simonov_nikita_lab_2/worker-1/src/FindShortestFileName.java new file mode 100644 index 0000000..7d57364 --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/src/FindShortestFileName.java @@ -0,0 +1,71 @@ +import java.io.IOException; +import java.nio.file.*; +import java.util.List; + +/** + * Программа для перемещения файла с самым коротким именем из одной директории в другую. + */ +public class FindShortestFileName { + + /** + * Точка входа в программу. + */ + public static void main(String[] args) { + // Указываем пути исходной и целевой директорий, а также путь результирующего файла + String sourceDirectory = "/var/data"; + String destinationDirectory = "/var/result"; + String resultFile = destinationDirectory + "/data.txt"; + + try { + // Получаем список файлов в исходной директории + List files = getFilesInDirectory(sourceDirectory); + + if (!files.isEmpty()) { + // Находим файл с самым коротким именем + Path shortestFileName = findShortestFileName(files); + + // Копируем найденный файл в целевую директорию + Files.copy(shortestFileName, Paths.get(resultFile), StandardCopyOption.REPLACE_EXISTING); + + System.out.println("Файл " + shortestFileName.getFileName() + " был скопирован в " + resultFile); + } else { + System.out.println("В исходной директории нет файлов для копирования."); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Получает список файлов в указанной директории. + * + * @param directory Путь к директории. + * @return Список файлов в директории. + * @throws IOException В случае ошибок при чтении директории. + */ + private static List getFilesInDirectory(String directory) throws IOException { + try (DirectoryStream stream = Files.newDirectoryStream(Paths.get(directory))) { + List fileList = new java.util.ArrayList<>(); + for (Path entry : stream) { + fileList.add(entry); + } + return fileList; + } + } + + /** + * Находит файл с самым коротким именем в списке. + * + * @param files Список файлов. + * @return Путь к файлу с самым коротким именем. + */ + private static Path findShortestFileName(List files) { + Path shortestFile = files.get(0); + for (Path file : files) { + if (file.getFileName().toString().length() < shortestFile.getFileName().toString().length()) { + shortestFile = file; + } + } + return shortestFile; + } +} diff --git a/simonov_nikita_lab_2/worker-1/worker-1.iml b/simonov_nikita_lab_2/worker-1/worker-1.iml new file mode 100644 index 0000000..d89d290 --- /dev/null +++ b/simonov_nikita_lab_2/worker-1/worker-1.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-2/.gitignore b/simonov_nikita_lab_2/worker-2/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-2/.idea/.gitignore b/simonov_nikita_lab_2/worker-2/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/simonov_nikita_lab_2/worker-2/.idea/misc.xml b/simonov_nikita_lab_2/worker-2/.idea/misc.xml new file mode 100644 index 0000000..07115cd --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-2/.idea/modules.xml b/simonov_nikita_lab_2/worker-2/.idea/modules.xml new file mode 100644 index 0000000..ba047c4 --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/simonov_nikita_lab_2/worker-2/Dockerfile b/simonov_nikita_lab_2/worker-2/Dockerfile new file mode 100644 index 0000000..ca43d4a --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/Dockerfile @@ -0,0 +1,18 @@ +# Используем образ с Java +FROM openjdk:21 + +# Создаем директории для данных и результата внутри контейнера +RUN mkdir /var/data +RUN mkdir /var/result + +# Создаем директорию приложения внутри контейнера +WORKDIR /app + +# Копируем исходные файлы вашего Java-приложения внутрь контейнера +COPY src /app/src + + Компилируем Java-код +RUN javac /app/src/FindingLargestNumberFile.java + +# Запускаем Java-приложение +CMD ["java", "-cp", "/app/src", "FindingLargestNumberFile"] diff --git a/simonov_nikita_lab_2/worker-2/src/FindingLargestNumberFile.java b/simonov_nikita_lab_2/worker-2/src/FindingLargestNumberFile.java new file mode 100644 index 0000000..e1007c6 --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/src/FindingLargestNumberFile.java @@ -0,0 +1,56 @@ +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; + +/** + * Программа для поиска наибольшего числа в файле, вычисления его второй степени и сохранения результата в другом файле. + */ +public class FindingLargestNumberFile { + + /** + * Точка входа в программу. + */ + public static void main(String[] args) { + // Указываем пути к исходному и результативному файлам + String sourceFilePath = "/var/result/data.txt"; + String resultFilePath = "/var/result/result.txt"; + + try (BufferedReader reader = new BufferedReader(new FileReader(sourceFilePath))) { + String line; + double largestNumber = Double.MIN_VALUE; + + // Читаем файл построчно и находим наибольшее число + while ((line = reader.readLine()) != null) { + try { + double number = Double.parseDouble(line); + if (number > largestNumber) { + largestNumber = number; + } + } catch (NumberFormatException e) { + // Пропускаем строки, которые не могут быть преобразованы в числа + } + } + + if (largestNumber != Double.MIN_VALUE) { + // Вычисляем вторую степень наибольшего числа + double square = Math.pow(largestNumber, 2); + + // Записываем результат в новый файл + try (FileWriter writer = new FileWriter(resultFilePath)) { + writer.write(Double.toString(square)); + } + + // Выводим результаты на экран + System.out.println("Наибольшее число в файле: " + largestNumber); + System.out.println("Вторая степень наибольшего числа: " + square); + System.out.println("Результат сохранен в " + resultFilePath); + } else { + System.out.println("Файл не содержит чисел."); + } + + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/simonov_nikita_lab_2/worker-2/worker-2.iml b/simonov_nikita_lab_2/worker-2/worker-2.iml new file mode 100644 index 0000000..9facd37 --- /dev/null +++ b/simonov_nikita_lab_2/worker-2/worker-2.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + \ No newline at end of file