Published on

linux配置

Authors
  • avatar
    Name
    李丹秋
    Twitter

常用命令

单容器

  1. docker ps -a 查看所有容器
  2. docker images 查看所有镜像
  3. docker run -d -p 80:80 --name nginx nginx 启动容器
  4. docker stop nginx 停止容器
  5. docker rm nginx 删除容器
  6. docker rmi nginx 删除镜像
  7. docker pull nginx 拉取镜像
  8. docker push nginx 推送镜像
  9. docker exec -it nginx bash 进入容器
  10. docker logs nginx 查看容器日志
  11. docker build -t fe-container:first .

容器组

  1. docker-compose up 启动容器组
  2. docker-compose down 停止容器组
  3. docker-compose ps 查看容器组状态
  4. docker-compose logs 查看容器组日志
  5. docker-compose exec nginx bash 进入容器组中的容器
  6. docker-compose build 构建容器组
  7. docker-compose up -d --build 重新构建容器组
  8. docker-compose down --rmi all 删除容器组和镜像

修改docker源

修改docker源为阿里云镜像源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload  // 重新加载配置
sudo systemctl restart docker // 重启docker

docker常用命令

部署前端项目

# build stage
FROM node:18 as build-stage ## 构建阶段 下载node镜像

WORKDIR /app ## 设置工作目录

COPY package.json ./ ## 复制package.json到工作目录

RUN npm config set registry https://registry.npmmirror.com/ ## 设置npm镜像源

RUN npm install ## 安装依赖包

COPY . . ## 复制项目到工作目录

RUN npm run build ## 构建项目

# production stage
FROM nginx:stable as production-stage ## 生产阶段 下载nginx镜像

COPY --from=build-stage /app/dist /usr/share/nginx/html ## 复制构建后的项目到nginx的默认目录

COPY --from=build-stage /app/nginx.conf /etc/nginx/conf.d/default.conf ## 复制nginx配置文件

EXPOSE 80 ## 暴露端口
CMD ["nginx", "-g", "daemon off;"] ## 启动nginx

nginx配置

upstream nest-server {
    server nest-app:3005;
}

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location ^~ /api {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass http://nest-server;
    }

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }



    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}


部署后端项目

Dockerfile

FROM node:20-alpine as build-stage

WORKDIR /app

COPY package.json .

RUN npm config set registry https://registry.npmmirror.com/

RUN npm install pnpm -g
RUN pnpm install


COPY . .

RUN pnpm run build

# production stage
FROM node:20-alpine as production-stage

COPY --from=build-stage /app/dist /app
COPY --from=build-stage /app/package.json /app/package.json

WORKDIR /app

RUN npm config set registry https://registry.npmmirror.com/
RUN npm install pnpm -g
RUN pnpm install --production

EXPOSE 3005

CMD ["node", "/app/main.js"]

docker compose

version: '3.8'
services:
  fe-app:
    image: fe-container:first
    ports:
      - 80:80
    depends_on:
      - nest-app
    networks:
      - common-network
  nest-app:
    build:
      context: ./
      dockerfile: ./Dockerfile
    depends_on:
      - mysql-container
      - redis-container
    networks:
      - common-network
  mysql-container:
    image: mysql
    ports:
      - 3306:3306
      - 33060:33060
    volumes:
      - /Users/muse/Desktop/docker-volume/mysql-test:/var/lib/mysql
    environment:
      MYSQL_DATABASE: meeting_room_booking_system
      MYSQL_ROOT_PASSWORD: lidanqiu123
    networks:
      - common-network
  redis-container:
    image: redis
    volumes:
      - /Users/muse/Desktop/docker-volume/mysql-test:/data
    networks:
      - common-network
networks:
  common-network:
    driver: bridge