Chuyển tới nội dung

Bài thực hành docker nodejs

1. Dự án viết bằng nodejs

Cấu trúc thư mục

|   .editorconfig
|   .gitignore
|   angular.json
|   client-app.iml
|   nginx.conf
|   package-lock.json
|   package.json
|   README.md
|   tsconfig.app.json
|   tsconfig.json
|   tsconfig.spec.json
|
+---.angular
+---.vscode
+---public
\---src
    |   index.html
    |   main.ts
    |   polyfills.ts
    |   styles.scss
    |
    +---app
    \---environments

2. Viết Dockerfile

FROM node:20-alpine AS build-stage
WORKDIR /app
COPY package*.json ./
COPY angular.json ./
COPY tsconfig*.json ./

RUN npm install --legacy-peer-deps
COPY . .
RUN npm run build --prod

#Production stage
FROM nginx:alpine AS production-stage
COPY --from=build-stage /app/dist/client-app/browser/* /usr/share/nginx/html

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

3. Build và Run

Build

C:\Project\devops-coaching\client-app>Docker build -t client-app .
[+] Building 176.8s (18/18) FINISHED
 => [internal] load build definition from Dockerfile
 => => transferring dockerfile: 739B
 => [internal] load metadata for docker.io/library/node:20-alpine
 => [internal] load metadata for docker.io/library/nginx:alpine
 => [auth] library/node:pull token for registry-1.docker.io    
 => [auth] library/nginx:pull token for registry-1.docker.io   
 .....
 => exporting to image              
 => => exporting layers             
 => => exporting manifest sha256:3103120edef07b9dc7133212cdf7411a3c5c4e9e52e68e    
 => => exporting config sha256:44f5fb0c03639c7a8e4f8172d23ad513c1466bd80      
 => => exporting attestation manifest sha256:36da2cff0490c92a1d6bd9df8be8f7ae4f01b5       
 => => exporting manifest list sha256:7cd8bf732a799dc5ebb71644cd4574134b1d7871ecd2dd0
 => => naming to docker.io/library/client-app:latest
 => => unpacking to docker.io/library/client-app:latest        

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/dygh8w9qx076opte3epl1egzc

Run

devops-coaching\client-app>docker run -p 80:80 --name client-app -d client-app
20efa9da1046554ab726a5c8ffe8bcbf34b55f4f7dfadc2076cd6cb9765f5d6e

Kiểm tra

Tag:
Liên hệ