Published on

docker-comose

Authors
  • avatar
    Name
    MissTree
    Twitter

示例:

version: "3.1"

services:
  db:
    image: mysql:8
    command:
      --default-authentication-plugin=mysql_native_password
      --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
      --group_concat_max_len=102400
    restart: unless-stopped
    volumes:
      - ./data/mysql/:/var/lib/mysql/
    environment:
      TZ: Asia/Shanghai # 指定时区
      MYSQL_ROOT_PASSWORD: "nextjs" # 配置root用户密码
      MYSQL_DATABASE: "nextjs" # 业务库名
      MYSQL_USER: "nextjs" # 业务库用户名
      MYSQL_PASSWORD: "nextjs" # 业务库密码
    ports:
      - 3306:3306

  nextjs:
    build: .
    ports:
      - "3000:3000"
    environment:
      TZ: Asia/Shanghai # 指定时区
    container_name: nextjs
    volumes:
      - ./:/app/
    depends_on:
      - db
    restart: unless-stopped

  nginx:
    image: nginx:mainline-alpine
    container_name: nginxserver
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./.next:/var/www/html
      - ./nginx-conf:/etc/nginx/conf.d


networks:
  nodeapp-network:
    driver: bridge


# 启动服务
docker-compose -f docker-compose.yml up -d
#  Docker Compose v2+
docker compose -f docker-compose.yml up -d

操作要在当前 docker-compose.yml 文件目录下执行:docker-compose up -d,或者显示的指定文件路径 docker-compose -f /home/website/next-blog/docker-compose.yml up -d

版本回退

在遇到线上版本问题时,我们要及时回退到之前稳定的版本

# 方式一 修改docker-compose.yml文件,将版本号修改为之前的版本号,然后重启服务
docker-compose down  # 停止并移除所有容器
docker-compose up -d  # 重新创建并启动容器


# 方式二 在创建 docker-compose.yml文件使标记 TAG 或者 IMAGE 注意:TAG 和 IMAGE 只能二选一,而且后面接 - 
# 没有 - 变量无法生效

services:
  db:
    image: mysql:${TAG:-8.0.45}
    # image: ${IMAGE:-mysql:8.0.45}

TAG=8.0.45 docker-compose up -d
IMAGE=mysql:8.0.45 docker-compose up -d

docekr compose down 方式会将容器移除,docker ps 是不在容器列表上(不管是运行还是停止的)

在不执行 docker-compose down 的情况下,执行 TAG=8.0.45 docker-compose up -d,docker compose 会自动停止并移除旧的容器,然后创建新的容器,并启动。建议改为:TAG=8.0.45 docker-compose up -d --force-recreate 强制重建容器