🌟docker-compose啟動前后端
📁準備文件
- xzs-mysql.sql(數據庫腳本)
- xzs-3.9.0.jar(后端代碼)
- application-prod.yml(后端配置文件)
- entry.sh(后端啟動腳本)
- exam-web.tar.gz(前端代碼)
- exam.conf(前端配置文件)
📝書寫Dockerfile-db
FROM mysql:8.0-debian
LABEL author=zhu desc="exam db"ENV MYSQL_ROOT_PASSWORD="1"
ENV MYSQL_DATABASE=exam
ENV MYSQL_USER=exam
ENV MYSQL_PASSWORD="1"ADD xzs-mysql.sql /docker-entrypoint-initdb.d/
📝書寫Dockerfile-web-backend
FROM ubuntu:22.04
LABEL author=zhu desc="exam_ubuntu images"ENV VER=3.9.0
ENV ENVIR=prod
ENV CONF=application-${ENVIR}.yml
ENV CODE=xzs-${VER}.jar
ENV DIR=/app/code/exam/backend/RUN sed -ri 's#archive.ubuntu.com|security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list \&& apt-get update \&& apt-get install -y openjdk-11-jdk curl \&& mkdir -p ${DIR}WORKDIR ${DIR}ADD ${CONF} .
ADD ${CODE} .
ADD entry.sh ./entry.shEXPOSE 8000CMD ["./entry.sh"]HEALTHCHECK --interval=5s --timeout=20s --retries=2 CMD curl http://127.0.0.1:8000
📝書寫Dockerfile-web-front
FROM ubuntu:22.04
LABEL author=zhu desc="zrlog_ubuntu images"ENV CODE_NAME=exam-web.tar.gz
ENV CODE_DIR=/app/code/exam/front/
ENV CONF=exam.confRUN sed -ri 's#archive.ubuntu.com|security.ubuntu.com#mirrors.aliyun.com#g' /etc/apt/sources.list \&& apt-get update \&& apt-get install -y nginx curl \&& mkdir -p ${CODE_DIR}ADD ${CODE_NAME} ${CODE_DIR}
ADD ${CONF} /etc/nginx/conf.d/EXPOSE 80 443CMD ["nginx","-g","daemon off;"]# 監控業務是否正常
HEALTHCHECK --interval=5s --timeout=20s --retries=2 CMD curl http://127.0.0.1:80
📝書寫docker-compose
services:exam_backend:image: "web:exam_backend"networks:- exambuild:context: ./web-backend/dockerfile: Dockerfilecontainer_name: exam_backend_v1ports:- 8000:8000restart: alwaysdepends_on:- exam_dbexam_db:image: "web:exam_db"networks:- exambuild:context: ./db/dockerfile: Dockerfilecontainer_name: exam_db_v1ports:- 3306:3306- 33060:33060restart: alwaysvolumes:- data:/var/lib/mysql/exam_front:image: "web:exam_front"networks:- exambuild:context: ./web-front/dockerfile: Dockerfilecontainer_name: exam_front_v1ports:- 81:80restart: alwaysnetworks:exam:driver: bridgeipam:driver: defaultconfig:- subnet: 172.10.0.0/24gateway: 172.10.0.1volumes:data:
💡docker-compose生成鏡像
docker-compose build
🚀docker-compose啟動鏡像
docker-compose up -d
🔍檢查驗證
docker-compose images
docker-compose ps
瀏覽器訪問
http://student.zhubl.xyz/ 學生端 student 123456
http://admin.zhubl.xyz/ 管理端 admin 123456