Skip to content

Docker

基本步骤

  1. 首先创建Dockerfile文件
  2. 执行 docker image build -t docker-demo . 其中docker-demo为自取的镜像名称,还要注意末尾的.,标识在当前目录
  3. 接下来可执行docker image ls查看新生产的image文件
  4. 启动容器 docker run -itd --name ${容器名} -v /root/pre-env:/root/pre-env -p 10104:80 bbw:v1 sh, 此命令会从image文件生产容器 docker container run -p 8000:3000 -it docker-demo:0.0.1 /bin/bash
  5. 查看所有容器 docker ps -a

进入容器命令

docker exec -it Container-ID /bin/bash

基础 Dockerfile 示例

dockerfile
FROM oberonamsterdam/pm2-git:12-alpine

RUN mkdir -p /usr/src/app/node-sass
COPY  node-sass.node /usr/src/app/node-sass
ENV SASS_BINARY_PATH /usr/src/app/node-sass/node-sass.node

RUN yarn global add lerna \
  && yarn global add nrm \
  && yarn global add typescript \
  && yarn global add ts-node \
  && yarn global add node-sass

EXPOSE 80

VOLUME /root/front-end

WORKDIR /root
CMD ["sh", "ls", "-a" ]
  • 删除镜像 docker rmi -f 镜像ID
  • 删除容器 docker rm [contaninerId]
  • 停止容器 docker stop [contaninerId]
  • 删除所有停止的容器 docker container prune
  • 从镜像启动容器(见上基本步骤2)

nextjs镜像部署dockerflie

dockerfile
# ===== 构建阶段 =====
FROM node:20-alpine AS builder
WORKDIR /app

# 复制全部源码
COPY . .

RUN npm install --registry=https://registry.npmmirror.com

RUN npm run build:prod

# ===== 运行阶段 =====
FROM node:20-alpine AS runner
WORKDIR /app

COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public

COPY --from=builder /app/package.json ./

EXPOSE 3000

CMD ["node", "server.js"]

配置.dockerignore文件

ignore
node_modules
.pnpm
.next/cache
.next/trace
.git
.gitignore
.DS_Store
.vscode
npm-debug.log
yarn-error.log
*.swp
*.tmp
*.log

执行

shell
docker build -f Dockerfile -t $IMAGE_NAME .
docker run -d --name $CONTAINER_NAME -p 6183:3000 $IMAGE_NAME