እንታይ እዩ ኢልኩም ትሓስቡ ትኾኑ። ንፕሮጀክት dApp ንኮንተይነር ንምግባር ምጥቃም ማለት እዩ። DOCKERIZE Docker ዶከር ንኣፕሊኬሽናት ንምምዕባል፣ ንምልኣኽን ንምስራሕን ዝሕግዝ ክፉት መድረኽ እዩ። Docker ካብ ክትፈልዮም የኽእለካ ምእንቲ ሶፍትዌር ብቕልጡፍ ከተብጽሕ ትኽእል። ንኣፕሊኬሽናትካ ትሕተ ቅርጽኻ ዌብ ኣፕስ፣ ኤፒኣይ፣ ሞባይል ኣፕስን ድሕረ ባይታ ኣገልግሎታትን የጠቓልሉ። ነቲ እትጽሕፎ ኮድ፡ እትጥቀመሉ ቤተ-መጻሕፍትን ንኽሰርሕ ዘድልዩ ውቅርታትን የጠቓልል። ኣፕሊኬሽናት ትሕተ ቅርጺ ከም operating system(OS), Network setting, web servers, database, ከምኡ’ውን ካልእ መተግበሪኻ ዝራኸበሉ ኣገልግሎታት። ብተወሳኺ ነቲ ኣፕሊኬሽንካ ዝሰርሓሉ ሃርድዌር ወይ ቨርቹዋል ማሽናት የጠቓልል። Docker ንኣፕሊኬሽንካ ከም ሓደ ኣካል ኣብ CONTAINER ዝበሃል ልሕሉሕ ዝተነጸለ ሃዋህው ክትዕሽጎን ከተካይዶን የኽእለካ። ኮንተይነር ኮንተይነራት ቀለልቲ ኮይኖም ነቲ ኣፕሊኬሽን ንምስራሕ ዘድሊ ኩሉ ዝሓዙ እዮም፣ ስለዚ ኣብቲ ኣብቲ ሆስት ዝተተኽለ ምጽጋዕ ኣየድልየካን እዩ። ኣብ እትሰርሓሉ እዋን ኮንተይነራት ክትካፈል ትኽእል ኢኻ፣ ኩሎም እትካፈሎም ሰባት ድማ ሓደ ዓይነት ብተመሳሳሊ መንገዲ ዝሰርሕ ኮንተይነር ከም ዝረክብ ኣረጋግጽ። ንኣብነት ንስኻን መሳርሕትኻን Node.jsን Hardhatን ዝጥቀም ናይ dApp ፕሮጀክት ትሰርሕ ኣለኻ። ኣብ መጀመርታ፡ መሳርሕትኻ ነቲ ኣፕሊኬሽን ኣብ ውሽጢ ዓዲ ቅድሚ ምክያዶም፡ ኣብ ስርዓታቶም Node.jsን Hardhatን ክተኽሉ ከም ዘድልዮም ፈሊጥካ፡ ነቲ ፕሮጀክት ኣብ ከባቢኻ ማሽን ትሰርዖ። ሕጂ፡ ሓደ ካብ መሳርሕትኻ ምስ Node.jsን Hardhatን ዘይቃዶ ማሽን ይጥቀም ኣሎ ንበል። ነዚ ጸገም ብኸመይ ምፈታሕካዮ? ብዶከር፡ መተግበሪኻ፡ ምስ ኩሎም ጽግዕተኛታቱ፡ ኣብ ሓደ ኣብ ዝኾነ ስርዓተ-ምሕደራ ክሰርሕ ዝኽእል መትሓዚ ክትዕሽጎ ትኽእል። እዚ ድማ ኣብ ዝተፈላለያ ማሽናት በበይኑ ሶፍትዌር ወይ ጽግዕተኛታት ናይ ምትካል ጉዳይ ይፈትሕ። ምስልታት መተግበሪኻ ኣብ ኮንተይነር ምስ ኣእተኻዮ፡ ከመይ ጌርካ ከም ዝሰርሕ ትገብሮ? ከም ፍሮንትኤንድ ዲቨሎፐር መጠን፡ ሓድሽ ሪኣክት ኣፕ ክትጅምር ከለኻ፡ መብዛሕትኡ ግዜ ወይ ትሰርሕ። ንዝጸንሐ ፕሮጀክት፡ ብተለምዶ ኣብ ውሽጢ ዓዲ ንኽሰርሕ ስዒቡ ምተኻየድካ። ብተመሳሳሊ ንሓደ ኮንተይነር ንምስራሕ ዝበሃል ነገር የድልየካ። npx create-react-app npm init vite@latest git pull npm install ፡ ኮንተይነር ምስሊ ምስሊ ኮንተይነር ንኹሎም መተግበሪኻ ኣብ ውሽጢ ኮንተይነር ንምስራሕ ዘድልዩ ኩሎም ፋይላት፣ ባይነሪታት፣ ላይብረሪታትን ውቅርታትን ዘጠቓልል ደረጃ ዝሓለወ ፓኬጅ እዩ። ኩሉ ነገር ብሓባር ተጠርኒፉ ኣብ ዝኾነ ከባቢ ብቐጻሊ ክጎዪ ከም ዝኽእል እዩ። ንናይ ኮንተይነር ምስሊ ኣብ ታሕቲ ርአ፤ ግብራዊ ስራሕ ኣብዚ ክፋል እዚ፡ ከመይ ጌርካ ኣፕካ ኮንተይነሪዝ ከም እንገብሮን ሼር ከም እንገብርን ክትመሃር ኢኻ። ቅድመ ኩነት ናይ ናይ መወዳእታ ስሪት ጽዒንካ ኣለኻ ። ዶከር ዴስክቶፕ ናይ ተኺልካ ኣለኻ ። Git ዓሚል ፋይላት ንምእራም IDE ወይ ናይ ጽሑፍ ኣርታዒ ኣለካ። ዶከር ቪዥዋል ስቱድዮ ሲ ኦድ ክትጥቀም ይመክር። መመልከቲኻ ኣብ ኮንተይነር ኣቐምጦ ኣብ ሱር ማህደርካ፡ ነዚ ናይ ትእዛዝ ምልክት ተጠቒምካ docker ጀምር፤ docker init ንዝወሃብ ምልዕዓላት መልሲ ሃቡ። ? What application platform does your project use? Node ? What version of Node do you want to use? 20.16.0 ? Which package manager do you want to use? npm ? Do you want to run "npm run build" before starting your server? No ? What command do you want to use to start the app? ["npm", "run", "dev"] ? What port does your server listen on? 5173 ኣብ ማህደርካ ሰለስተ ተወሳኺ ፋይላት ክትሪኢ ኢኻ፡ ንሳቶም ድማ , ከምኡ’ውን .dockerignore compose.yaml DockerFile : Dockerfile ሓደ ተጠቃሚ ኣብ መስመር ትእዛዝ ምስሊ ንምእካብ ክጽውዖም ዝኽእል ኩሎም ትእዛዛት ዝሓዘ ናይ ጽሑፍ ሰነድ እዩ። Dockerfil : እቲ Compose ፋይል ወይ ፋይል ነቲ ብ ። compose.yaml compose.yaml Compose Specification ዝቐረበ ሕግታት ይኽተል ኣብ ከመይ ጌርካ multi-container applications ትገልጽ : እዚ ፋይል እዚ ንፋይላትን ማህደርን ካብቲ ናይ ህንጸት ዓውዲ የግልል። .dockerignore ኣብ ውሽጢ ፡ ነቲ ፋይል ኣጽርዮ እሞ እዞም ዝስዕቡ ንውስኸሉ፤ Dockerfile # syntax=docker/dockerfile:1 ARG NODE_VERSION=20.16.0 FROM node:${NODE_VERSION}-alpine # Use development node environment by default. ENV NODE_ENV development WORKDIR /app # Copy package.json and package-lock.json to the working directory COPY package.json package-lock.json ./ # Install dependencies RUN npm install # Copy the rest of the source files into the image COPY . . # Change ownership of the /app directory to the node user RUN chown -R node:node /app # Switch to the node user USER node # Ensure node_modules/.bin is in the PATH ENV PATH /app/node_modules/.bin:$PATH # Expose the port that the application listens on EXPOSE 5173 # Run the application CMD ["npm", "run", "dev"] ነዚ ተጠቒምካ ናይ ኮንተይነር ምስሊካ ሃንጽ፤ docker build -t <your-image-name> . ምስሊ ኮንተይነርካ ንምርኣይ፡ ናብ docker desktop ናትካ ብምኻድ፡ ኣብ ጠውቕ፡ ከምቲ ኣብ ታሕቲ ዘሎ Images ወይ ድማ ነዚ ናይ ትእዛዝ ምልክት ክትጥቀመሉ ትኽእል ኢኻ፣ docker images ኣብ ተርሚናልካ ምስል ኮንተይነርካ ንምርኣይ ነቲ ምስሊ ኣካይድዎ፤ docker run -p 5173:5173 <your-image-name> ከምዚ ዝበለ ውጽኢት ክትሪኢ ይግባእ፤ > vite-project@0.0.0 dev > vite VITE v5.4.2 ready in 222 ms ➜ Local: http://localhost:5173/ ➜ Network: http://172.17.0.2:5173/ ነቲ ኣፕሊኬሽን ምክፋል ናብ ወይ እቶ። Docker Hub ተመዝገብ ነቲ ዝብል ቁልፊ ምረጽ። Create Repository ንመኽዘንካ ብተመሳሳሊ ስም ምስሊ መትሓዚ ስመዮ። እቲ ምዃኑ ኣረጋግጽ ። ርኡይነት ህዝባዊ ምረጽ ። ምፍጣር መስመር ትእዛዝ ተጠቒምካ ናብ Docker Hub እቶ docker login -u <YOUR USERNAME> Password ናትካ ኣእቱ ፓስዎርድካ ኣብ እትጽሕፈሉ እዋን ኣይክርአን እዩ። ነቲ ምስሊ ሓድሽ ስም ንምሃብ ትእዛዝ ተጠቐም። ብ Docker ID ናትካ ተክኦ፤ getting-started docker tag YOUR-USER-NAME እዚ ። denied: requested access to the resource is denied ነዚ ንምእራም ድማ፡ ብምጥቃም ዳግማይ ምእታው ፣ enter ንጽቀጥ። docker login ብድሕሪኡ ናብ መርበብ ሓበሬታኻ ክትከይድ ኢኻ፣ ናትካ ነቲ ተርሚናል ቅዳሕ እሞ ኣእትዎ፣ OTP ንጽቀጥ CONFIRM ዝብል ነቲ ምስሊ ዳግማይ ምድፋእ እዩ። ከምዚ ዝኣመሰለ ውጽኢት ክትሪኢ ኢኻ፤ እዚ ምስልኻ ተሃኒጹ ናብ መዝገብ ከም ዝተደፍአ ዘርኢ እዩ። ሕጂ ጋንታኻ ነዚ ምስሊ ስሒባ ነቲ ኣፕሊኬሽን ኣብ ናይ ከባቢኦም ማሽን ከካይዶ ትኽእል እያ። ኣብ ዶከር ዴስክቶፕካ ወይ ኣብ ዝርከብ ናይ ምድላይ ባር ምስሊ ኮንተይነርካ ብምድላይ ክትምርምር ትኽእል ። ዶከር ሃብካ ምፍታሕ ጸገማት : ግጭት ወደብ : እቲ ወደብ ድሮ ኣብ ጥቕሚ እንተነይሩ። ጌጋ : ነቲ መስርሕ ነቲ ፖርት ተጠቒሙ ኣለልዩ ነዞም ዝስዕቡ ትእዛዛት ተጠቒሙ ኣቋሪጽዎ፤ መፍትሒ # Find the process using port 8000 lsof -i :8000 # Kill the process (replace <PID> with the actual process ID found from the previous command) kill -9 <PID> ከም ኣማራጺ፡ ነቲ ዶከር ኮንተይነር ኣብ ዝተፈላለየ ወደብ ከተካይዶ ትኽእል ኢኻ፤ docker run -p 8001:8000 <your-image-name> ሓደ ኣፕሊኬሽን ኣዘምንዎ። ዝኾነ ኣፕካ እተመሓይሾ ነገር ንኣብነት ስነ-ቓል ወይ ፋንክሽን ትቕይሮ፣ ዶከር ዴስክቶፕካ ደው ኣቢልካ፡ ኣብ ጠውቕ Containers ነቲ ፖርት ደው ኣቢልና ኣብ delete ዝብል ጠውቕ ነቲ Application ትእዛዝ ተጠቒምካ ዳግማይ ምህናጽ docker build docker build -t <your-image-name> . ነቲ ኣፕ ዳግማይ ኣካይድዎ። docker run -p 5173:5173 <your-image-name> መደምደምታ ነዚ መምርሒ ብምኽታል፡ መተግበሪኻን ጽግዕተኛታቱን ብቐሊሉ ኣብ ሓደ ኮንተይነር ክትዕሽጎን፡ ምስ ጋንታኻ ከተካፍሎን፡ ኣብ ዝኾነ ማሽን ብቐሊሉ ከተካይዶን ትኽእል። እዚ ድማ ምትሕብባር ዘዕቢ ጥራይ ዘይኮነስ ምስ ኣወዳድባ ከባቢን ምትእስሳርን ዝተኣሳሰሩ ጉዳያት እውን የቃልል።