• 如何使用Docker-Compose打包多个应用
  • 发布于 2个月前
  • 222 热度
    0 评论
准备工作
这次部署两个项目,一个是 web 站点项目,一个是爬虫的后台应用项目。
1.两个项目的 jar 包,分别为 app.jar,spider.jar
2.两个应用都依赖 redis 和 mysql

3.mysql 初始化需要的 sql 文件


docker file 文件
docker file 是 使用 docker 部署应用的命令。 由于是两个文件,所以需要两个不同的 Dockerfile .具体的 build 的内容如下:

Dockerfile web 的 build 文件
FROM java:8
MAINTAINER fuwei<laofu_online@163.com>

COPY oncesearch-portal-1.0-SNAPSHOT.jar /app.jar

CMD ["--server.port=80"]
EXPOSE 80

ENTRYPOINT ["java","-jar","/app.jar"]
爬虫的文件
FROM java:8
MAINTAINER fuwei<laofu_online@163.com>
COPY oncesearch-spider-1.0.0.jar /spider.jar
ENTRYPOINT ["java","-jar","/spider.jar"]
Compose 文件
version: "3.0"
services:
  portal:
    build:
      dockerfile: Dockerfile
      context: .
    image: portal
    depends_on:
      - redis
      - mysql
    ports:
      - 80:80
  spider:
    build:
      dockerfile: DockerfileSpider
      context: .
    image: spider
    depends_on:
      - redis
      - mysql
  redis:
    image: "library/redis:alpine" # 版本
  mysql:
    image: "mysql:latest"
    environment:
      MYSQL_ROOT_PASSWORD: "Abc12345++++"
      MYSQL_USER: 'root'
      MYSQL_PASS: "Abc12345++++"
    volumes:  # 挂载目录
      - "./db:/var/lib/mysql"
      - "./conf/my.cnf:/etc/my.cnf"
      - "./init:/docker-entrypoint-initdb.d/" # 初始化的 sql 
\    ports:  # 对内和对外的端口
      - "3307:3306"
最终文件的目录:
├── Dockerfile
├── DockerfileSpider
├── docker-compose.yml
├── init
│   └── ITBlog.sql
├── oncesearch-portal-1.0-SNAPSHOT.jar
└── oncesearch-spider-1.0.0.jar

如何访问 DB 和 Redis.
由于 docker compose 会自动创建一个虚拟的内网环境,所以在访问 MySQL 和 Redis 只需要使用镜像的名称即可解析到对应的域名。
# DB 连接字符串,直接使用镜像的名称即可
url: jdbc:mysql://mysql:3306/ITBlog?serverTimezone=UTC
最后直接执行 docker-compose执行打包部署。
用户评论