单体项目部署
确定需要部署的环境服务依赖
环境、服务依赖
| 服务名称 | 英文名 | 端口号 | 版本号 | 服务类别 |
|---|
| 数据库 | mysql | 3306 | v8 | 环境依赖 |
| 缓存 | redis | 6379 | v6 | 环境依赖 |
| 判题服务后端 | star-oj-backend | 8010 | java:8 | 服务依赖 |
编写服务需要的dockerfile
在服务器编译打包版本
需要远程同步代码,idea开发工具,可参考博客:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM maven:3.8.1-jdk-8-slim as builder
WORKDIR /app COPY pom.xml . COPY src ./src
RUN mvn package -DskipTests
CMD ["java","-jar","/app/target/staroj-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]
|
上传jar包版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FROM openjdk:8-jdk-alpine
WORKDIR /app
ADD target/staroj-backend-0.0.1-SNAPSHOT.jar .
EXPOSE 8101
ENTRYPOINT ["java","-jar","/app/staroj-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]
|
docker compose 安装
这里我们使用 Docker Compose V2 版本,相比 V1 版本统一了命令,使用更方便:
Docker Compose V2 地址:https://docs.docker.com/compose/migrate/
Docker Compose Linux 安装:https://docs.docker.com/compose/install/linux/#install-using-the-repository
1)设定安装来源
1 2
| sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
2)安装 Docker 和 Docker Compose
1
| sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
启动 Docker
1
| sudo systemctl start docker
|
4)测试 Docker
1 2
| systemctl status docker sudo docker run hello-world
|
编写docker compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| version: '3' services: mysql: image: mysql:8 container_name: staroj-mysql environment: MYSQL_ROOT_PASSWORD: 123456root ports: - "3306:3306" volumes: - ./.mysql-data:/var/lib/mysql - ./mysql-init:/docker-entrypoint-initdb.d restart: always networks: - mynetwork
redis: image: redis:6 container_name: staroj-redis command: redis-server --appendonly yes --requirepass '123456root'
restart: always ports: - "6379:6379" volumes: - ./.redis-data:/data:rw
- ./.redis/logs:/logs environment: - TZ=Asia/Shanghai networks: - mynetwork depends_on: - mysql
staroj-backend: container_name: staroj-backend build: context: . dockerfile: Dockerfile ports: - "8101:8101" networks: - mynetwork depends_on: - mysql - redis
networks: mynetwork:
|
然后在服务器启动即可
1 2 3 4 5
| docker compose -f docker-compose-name.yml up -d -f : 指定需要执行的 yml -d :后台启动 如果当前目录之后一个ymL文件可以直接 docker compose up -d
|