- Published on
docker-comose
- Authors

- Name
- MissTree
示例:
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 强制重建容器