虽然久闻docker大名,但是由于笔者折腾需要,最近才正式接触这个工具。Docker 是一个开源的容器化平台,它使开发人员能够更轻松地创建、部署和运行应用程序。它通过容器(containers)将应用程序及其所有依赖项打包到一个独立的单元中,确保应用程序可以在任何环境中一致地运行。这种一致性解决了传统上“在我的机器上工作但在你的机器上不行”的问题(ChatGPT,2024)。前段时间想着开发一个多端同步的看番软件,好让我不必切换设备后忘记进度。为了能让后端在我的这台运行着博客的服务器上正常工作并不影响博客的运行,docker似乎是最好的解决方案。于是我在本地wsl上完成了后端的js开发,接着打包成docker镜像在服务器上部署。由于是第一次使用docker,很多操作很不熟悉,想着在博客上记录一些基本的操作方便以后参考。
一. 在现有目录中构建docker镜像(后端项目)
在项目根目录下创建名为Dockerfile的文件:
# 基于 Node.js 官方镜像 FROM node:16 # 设置工作目录 WORKDIR /app # 复制 package.json 并安装依赖(根据具体情况更改) COPY package*.json ./ RUN npm install # 复制项目代码 COPY . . # 暴露应用端口(根据具体情况更改) EXPOSE xxxx # 启动命令 CMD ["npm", "start"]
创建docker-compose.yml文件(如需管理数据库):
#省略部分根据实际更改 version: '3' services: db: image: postgres:16 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: <xxxx> POSTGRES_DB: <xxxx> volumes: - db_data:/var/lib/postgresql/data ports: - "5432:5432" backend: build: . ports: - "4000:4000" environment: DATABASE_URL: postgres://postgres:XXXXXXXXX depends_on: - db volumes: db_data:
启动docker容器
docker-compose up --build
二. 管理Docker容器:
启动容器:
docker-compose up docker-compose up -d #启动并后台运行
查看正在运行的容器:
docker ps
查看容器日志:
docker-compose logs backend
停止容器:
docker stop <container_name_or_id> #可用第2点查看
删除容器:
docker stop <container_name_or_id> #停止容器 docker rm <container_name_or_id> #删除容器 docker rm -f <container_name_or_id> #强制删除正在运行的容器 docker container prune #删除所有已停止的容器