Docker部署前后端分离项目
镜像下载
在有网络的电脑下载镜像(Windows):依次在CMD命令台执行以下代码
docker pull node:20
docker pull openjdk:22-jdk
docker pull mysql:8.0
docker pull nginx:1.27
删除镜像代码:
docker rmi node:latest
查看镜像列表代码:
docker images
测试镜像代码:
docker run --rm openjdk:22-jdk java -version
检查容器状态(包括已停止的):
docker ps -a
镜像导出
docker save -o node-20.tar node:20
docker save -o mysql-8.0.tar mysql:8.0
docker save -o openjdk-22-jdk.tar openjdk:22-jdk
docker save -o all-images.tar node:20 mysql:8.0 openjdk:22-jdk
镜像导入
docker load -i node-20.tar
docker load -i mysql-8.0.tar
docker load -i openjdk-22-jdk.tar
项目部署
后端:
FROM openjdk:22-jdk
WORKDIR /app
COPY platFormBack-0.0.1-SNAPSHOT.jar .
EXPOSE 8580
ENTRYPOINT ["java", "-jar", "platFormBack-0.0.1-SNAPSHOT.jar"]
前端:
FROM nginx:1.27
RUN rm -rf /etc/nginx/conf.d/*
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY dist /usr/share/nginx/html
EXPOSE 9877
CMD ["nginx", "-g", "daemon off;"]
server {
listen 9877;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
}
docker-compose.yml:
version: "3.8"
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: frontend_container
ports:
- "9877:9877"
restart: always
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: backend_container
ports:
- "8580:8580"
restart: always
mysql:
image: mysql:8.0
container_name: mysql_container
ports:
- "3307:3306" # 宿主机3307 → 容器3306
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
数据库
docker cp "D:/Docker部署测试/mysql-init/platform.sql" mysql_container:/init.sql
docker exec -it mysql_container bash
mysql -u root -p
create database platform;
source /init.sql;
项目容器启动
docker-compose up -d
强制使用最新镜像并覆盖
docker-compose up -d --build
关闭运行代码:
docker-compose down
进入容器查看
docker exec -it frontend_container bash
cat /etc/nginx/conf.d/default.conf
nginx -t
BUG修复
前端或后端一直访问不到:
原因:容器启动的镜像如果已存在未关闭,则一直启动的是旧的镜像。
后端请求mysql失败:
强制重新构建镜像
docker-compose down
docker-compose up -d --build