This content originally appeared on DEV Community and was authored by duytruong09
- Quản lý Image Docker file của api-portal
FROM node:20-alpine3.18 AS build
WORKDIR /app
COPY package*.json ./
ARG NPM_TOKEN_GLOBAL
RUN apk update
RUN apk add git
RUN apk add --no-cache make gcc g++ libc6-compat bash python3 vips-dev
RUN echo @piggi-group:registry=https://gitlab.piggi.vn/api/v4/groups/2/-/packages/npm/ >> .npmrc
RUN echo //gitlab.piggi.vn/api/v4/groups/2/-/packages/npm/:_authToken=$NPM_TOKEN_GLOBAL >> .npmrc
RUN npm install --force
COPY . .
RUN npm run build
FROM node:20-alpine3.18
WORKDIR /app
COPY --from=build /app /app
RUN apk add \
--no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/v3.14/main \
ca-certificates
ENV NODE_SERVER_PORT=8081
EXPOSE 8081
ENTRYPOINT ["yarn", "start" ]
docker build
- Khi nào: tạo một image mới từ Dockerfile.
- Mục đích: build một image như portal để khỏi chạy run code
Ví dụ:
docker build .
docker build --build-arg NPM_TOKEN_GLOBAL=glpat-bzMY8GLHz15XXXXXXX .
Vì sao lại có option --build-arge
?
- Mục đích để truyền tham số trong quá trình build
Vì sao lại lại là token?
- Vì để buld ở dev với prod thì có token khác nhau, không bị lộ token nên bị đọc source code -> bảo mật hơn – đổi token linh hoạt
Trong file ci-template.yml có docker build
có cách khác để lấy image là pull image có sẵn trên kho docker pull
docker pull hello-world
docker images
- Khi nào: Khi cần xem các image đã build
- Mục đích: Kiểm tra, quản lý dung lượng, tên, tag image.
Ví dụ:
docker images
docker rmi: (remove image)
- Khi nào: Khi muốn xoá image không dùng nữa.
- Mục đích: Giải phóng dung lượng, dọn dẹp hệ thống.
Ví dụ:
docker rmi hello-world:latest
- Quản lý Container docker run
- Khi nào: khi muốn chạy một image
- Mục đích: Chạy dịch vụ, ứng dụng, môi trường phát triển/nghiệm thử.
Ví dụ:
docker run hello-world
docker ps
- Khi nào: Khi muốn xem các container đang chạy. Mục đích: Giám sát hoạt động container, lấy ID/container-name.
- Dùng ở đâu: Sau khi đã chạy các container.
Ví dụ:
docker ps
docker ps -a
docker exec
- Khi nào: Khi muốn truy cập hoặc thực thi lệnh trong container đang chạy.
- Mục đích: Debug, cài bổ sung, kiểm tra tệp/phần mềm bên trong container.
- Dùng ở đâu: Trong quá trình phát triển hoặc khắc phục lỗi.
Ví dụ:
docker exec -it bfa6acb3eb2f bash
docker logs
- Khi nào: Khi cần xem log ứng dụng/container.
- Mục đích: Kiểm tra hoạt động, phát hiện lỗi.
- Dùng ở đâu: Sau khi ứng dụng chạy, gặp sự cố cần kiểm tra log.
Ví dụ:
docker logs 108c20adb38e
docker stop
Khi nào: Khi muốn dừng một container đang hoạt động.
Mục đích: Ngừng ứng dụng đang chạy, giải phóng ram
Ví dụ:
docker stop 108c20adb38e
docker rm: (remove container)
Khi nào: Sau khi đã dừng (stop) container, muốn xoá nó khỏi máy.
Mục đích: Dọn dẹp các container không sử dụng.
This content originally appeared on DEV Community and was authored by duytruong09