
这次部署两个项目,一个是 web 站点项目,一个是爬虫的后台应用项目。
docker file 是 使用 docker 部署应用的命令。 具体的命令可以参考 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
由于 docker compose 会自动创建一个虚拟的内网环境,所以在访问 MySQL 和 Redis 只需要使用镜像的名称即可解析到对应的域名。
# DB 连接字符串,直接使用镜像的名称即可
url: jdbc:mysql://mysql:3306/ITBlog?serverTimezone=UTC
最后直接执行 docker-compose执行打包部署。