paint-brush
ንጀመርቲ መምርሒ ንዶከርይዝድ ፕሮጀክት ቫይት ዲኣፕ@ileolami
281 ንባባት ሓድሽ ታሪኽ

ንጀመርቲ መምርሒ ንዶከርይዝድ ፕሮጀክት ቫይት ዲኣፕ

Ileolami6m2024/09/24
Read on Terminal Reader

ኣዝዩ ነዊሕ፤ ንምንባብ

ዶከር ንኣፕሊኬሽናት ንምምዕባል፣ ንምልኣኽን ንምስራሕን ዝሕግዝ ክፉት መድረኽ እዩ። Docker ንኣፕሊኬሽንካ ከም ሓደ ኣካል ኣብ **CONTAINER ዝበሃል ልሕሉሕ ዝተነጸለ ሃዋህው ክትዕሽጎን ከተካይዶን የኽእለካ። ኮንተይነራት ቀለልቲ ኮይኖም ነቲ ኣፕሊኬሽን ንምስራሕ ዘድሊ ኩሉ ዝሓዙ እዮም። ኣብ እትሰርሓሉ እዋን ኮንተይነራት ክትካፈል ትኽእል ኢኻ፣ ኩሎም እትካፈሎም ሰባት ድማ ሓደ ዓይነት ብተመሳሳሊ መንገዲ ዝሰርሕ ኮንተይነር ከም ዝረክብ ኣረጋግጽ።
featured image - ንጀመርቲ መምርሒ ንዶከርይዝድ ፕሮጀክት ቫይት ዲኣፕ
Ileolami HackerNoon profile picture
0-item


DOCKERIZE እንታይ እዩ ኢልኩም ትሓስቡ ትኾኑ። ንፕሮጀክት dApp ንኮንተይነር ንምግባር 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 ምተኻየድካ። ብተመሳሳሊ ንሓደ ኮንተይነር ንምስራሕ ፡ ኮንተይነር ምስሊ ዝበሃል ነገር የድልየካ።

ምስሊ ኮንተይነር ንኹሎም መተግበሪኻ ኣብ ውሽጢ ኮንተይነር ንምስራሕ ዘድልዩ ኩሎም ፋይላት፣ ባይነሪታት፣ ላይብረሪታትን ውቅርታትን ዘጠቓልል ደረጃ ዝሓለወ ፓኬጅ እዩ። ኩሉ ነገር ብሓባር ተጠርኒፉ ኣብ ዝኾነ ከባቢ ብቐጻሊ ክጎዪ ከም ዝኽእል እዩ።

ንናይ ኮንተይነር ምስሊ ኣብ ታሕቲ ርአ፤

ስእሊ ስክሪን ናይ ሓደ "web3-dapp:latest" ዝበሃል ናይ ዶከር ምስሊ ምሕደራ መተሓላለፊ።

ግብራዊ ስራሕ

ኣብዚ ክፋል እዚ፡ ከመይ ጌርካ ኣፕካ ኮንተይነሪዝ ከም እንገብሮን ሼር ከም እንገብርን ክትመሃር ኢኻ።

ቅድመ ኩነት

  1. ናይ ዶከር ዴስክቶፕ ናይ መወዳእታ ስሪት ጽዒንካ ኣለኻ ።
  2. ናይ Git ዓሚል ተኺልካ ኣለኻ ።
  3. ፋይላት ንምእራም IDE ወይ ናይ ጽሑፍ ኣርታዒ ኣለካ። ዶከር ቪዥዋል ስቱድዮ ሲ ኦድ ክትጥቀም ይመክር።

መመልከቲኻ ኣብ ኮንተይነር ኣቐምጦ

  1. ኣብ ሱር ማህደርካ፡ ነዚ ናይ ትእዛዝ ምልክት ተጠቒምካ docker ጀምር፤

     docker init
  2. ንዝወሃብ ምልዕዓላት መልሲ ሃቡ።

     ? 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
  3. ኣብ ማህደርካ ሰለስተ ተወሳኺ ፋይላት ክትሪኢ ኢኻ፡ ንሳቶም ድማ .dockerignore , compose.yaml ከምኡ’ውን DockerFile

  1. ኣብ ውሽጢ 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"]
  2. ነዚ ተጠቒምካ ናይ ኮንተይነር ምስሊካ ሃንጽ፤

     docker build -t <your-image-name> .
  3. ምስሊ ኮንተይነርካ ንምርኣይ፡ ናብ docker desktop ናትካ ብምኻድ፡ ኣብ Images ጠውቕ፡ ከምቲ ኣብ ታሕቲ ዘሎ

    ወይ ድማ ነዚ ናይ ትእዛዝ ምልክት ክትጥቀመሉ ትኽእል ኢኻ፣

     docker images
  4. ኣብ ተርሚናልካ ምስል ኮንተይነርካ ንምርኣይ

    ውጽኢት ናይቲ "docker images" ዝብል ትእዛዝ ዘርኢ ናይ ተርሚናል መስኮት።

  5. ነቲ ምስሊ ኣካይድዎ፤

     docker run -p 5173:5173 <your-image-name>

ከምዚ ዝበለ ውጽኢት ክትሪኢ ይግባእ፤

 > [email protected] dev > vite VITE v5.4.2 ready in 222 ms ➜ Local: http://localhost:5173/ ➜ Network: http://172.17.0.2:5173/

ነቲ ኣፕሊኬሽን ምክፋል

  1. ናብ Docker Hub ተመዝገብ ወይ እቶ።

  2. ነቲ Create Repository ዝብል ቁልፊ ምረጽ።

  3. ንመኽዘንካ ብተመሳሳሊ ስም ምስሊ መትሓዚ ስመዮ። እቲ ርኡይነት ህዝባዊ ምዃኑ ኣረጋግጽ ።

  4. ምፍጣር ምረጽ ።

  1. መስመር ትእዛዝ ተጠቒምካ ናብ Docker Hub እቶ

     docker login -u <YOUR USERNAME>
  2. Password ናትካ ኣእቱ

    ፓስዎርድካ ኣብ እትጽሕፈሉ እዋን ኣይክርአን እዩ።

  3. ነቲ getting-started ምስሊ ሓድሽ ስም ንምሃብ docker tag ትእዛዝ ተጠቐም። YOUR-USER-NAME ብ Docker ID ናትካ ተክኦ፤

    እዚ denied: requested access to the resource is denied

    ነዚ ንምእራም ድማ፡

    1. docker login ብምጥቃም ዳግማይ ምእታው ፣ enter ንጽቀጥ።
    2. ብድሕሪኡ ናብ መርበብ ሓበሬታኻ ክትከይድ ኢኻ፣
    3. OTP ናትካ ነቲ ተርሚናል ቅዳሕ እሞ ኣእትዎ፣
    4. CONFIRM ዝብል ንጽቀጥ
    5. ነቲ ምስሊ ዳግማይ ምድፋእ እዩ።

    ከምዚ ዝኣመሰለ ውጽኢት ክትሪኢ ኢኻ፤

እዚ ምስልኻ ተሃኒጹ ናብ መዝገብ ከም ዝተደፍአ ዘርኢ እዩ። ሕጂ ጋንታኻ ነዚ ምስሊ ስሒባ ነቲ ኣፕሊኬሽን ኣብ ናይ ከባቢኦም ማሽን ከካይዶ ትኽእል እያ።

ኣብ ዶከር ዴስክቶፕካ ወይ ዶከር ሃብካ ኣብ ዝርከብ ናይ ምድላይ ባር ምስሊ ኮንተይነርካ ብምድላይ ክትምርምር ትኽእል ።

ምፍታሕ ጸገማት

  • ግጭት ወደብ :

    • ጌጋ : እቲ ወደብ ድሮ ኣብ ጥቕሚ እንተነይሩ።

    • መፍትሒ : ነቲ መስርሕ ነቲ ፖርት ተጠቒሙ ኣለልዩ ነዞም ዝስዕቡ ትእዛዛት ተጠቒሙ ኣቋሪጽዎ፤

       # 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>
  • ሓደ ኣፕሊኬሽን ኣዘምንዎ።

    ዝኾነ ኣፕካ እተመሓይሾ ነገር ንኣብነት ስነ-ቓል ወይ ፋንክሽን ትቕይሮ፣

    1. ዶከር ዴስክቶፕካ ደው ኣቢልካ፡ ኣብ Containers ጠውቕ

    2. ነቲ ፖርት ደው ኣቢልና ኣብ delete ዝብል ጠውቕ

    3. ነቲ Application docker build ትእዛዝ ተጠቒምካ ዳግማይ ምህናጽ

       docker build -t <your-image-name> .
    4. ነቲ ኣፕ ዳግማይ ኣካይድዎ።

       docker run -p 5173:5173 <your-image-name>


መደምደምታ

ነዚ መምርሒ ብምኽታል፡ መተግበሪኻን ጽግዕተኛታቱን ብቐሊሉ ኣብ ሓደ ኮንተይነር ክትዕሽጎን፡ ምስ ጋንታኻ ከተካፍሎን፡ ኣብ ዝኾነ ማሽን ብቐሊሉ ከተካይዶን ትኽእል። እዚ ድማ ምትሕብባር ዘዕቢ ጥራይ ዘይኮነስ ምስ ኣወዳድባ ከባቢን ምትእስሳርን ዝተኣሳሰሩ ጉዳያት እውን የቃልል።