在Docker中开发Java 8 Spring Boot应用程序

在本文中,我将向您展示如何使用Java 8开发和运行简单的Spring Web应用程序,而无需在本地计算机上安装Java 8。

Python开发人员使用虚拟环境为不同项目创建和管理单独的环境,并且每个人都使用不同版本的Python来执行和存储并解决Python依赖关系。Java和许多其他技术不支持虚拟环境概念。在这一点上,Docker来帮助我们。

Docker是一个虚拟化平台。我不打算深入解释Docker的细节。您可以从Docker官方网站上找到基本信息和安装指南。

一旦你安装了Docker工具箱,你就不需要在我们的示例应用程序中安装所需的Java 8或MySQL。

现在,您可以从GitHub 下载我的代码

首先,我们来检查一下Docker-compose文件:

version : '2'
services:
  springappserver:
    build:
      context: . 
      dockerfile: springapp.dockerfile
    ports: 
      - "8080:8080"
    networks:
      - net-spring-db
    volumes:
      - .:/vol/development
    depends_on:
      - mysqldbserver
  mysqldbserver:
    build:
      context: . 
      dockerfile: mysqldb.dockerfile
    ports:
      - "3306:3306"
    networks:
      - net-spring-db
    environment:
      MYSQL_DATABASE: testdb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
      MYSQL_ROOT_PASSWORD: myrootpassword
    container_name: mysqldbserver
networks:
  net-spring-db:
    driver: bridge

我们在“net-spring-db”网络上有两台服务器。第一个命名为“springappserver”,并使用springapp.dockerfile进行配置,这将在后面介绍。第二个命名为mysqldbserver,并使用mysqldb.dockerfile进行配置,这也将在后面介绍。

现在,让我们看看springapp.dockerfile:

#
# Java 1.8 & Maven Dockerfile
#
#
# pull base image.
FROM java:8
# maintainer
MAINTAINER Dursun KOC "dursunkoc@gmail.com"
# update packages and install maven
RUN  \
  export DEBIAN_FRONTEND=noninteractive && \
  sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
  apt-get update && \
  apt-get -y upgrade && \
  apt-get install -y vim wget curl maven
# attach volumes
VOLUME /vol/development
# create working directory
RUN mkdir -p /vol/development
WORKDIR /vol/development
# maven exec
CMD ["mvn", "clean", "package", "exec:java"]

这个Docker文件配置了一个从Docker Hub的Java 8镜像继承而来的Docker镜像 。在那个Java 8映像上,我安装了vim,wget,curl,Maven,并且设置了这个卷以便把我现有的项目编码。最后,执行Maven命令来运行我的应用程序。

然后,我们来看看mysqldb.dockerfile:

FROM mysql/mysql-serve

MAINTAINER Dursun KOC <dursunkoc@gmail.com>

# Copy the database initialize script: 
# Contents of /docker-entrypoint-initdb.d are run on mysqld startup
ADD  mysql/ /docker-entrypoint-initdb.d/

这个Dockerfile配置一个Docker镜像,它从Docker Hub的MySQL/mysql-server镜像中继承下来。在MySQL映像上,我放置了位于MySQL文件夹中的db-schema创建脚本。我在这个文件夹里有一个单一的SQL文件(data.sql)创建“人员”表。

现在,我们来看看应用程序结构。

我们的应用程序是从src/com/turkcell/softlab/Application.java文件开始的,我们唯一的Controller是PersonController(src/com/ turkcell/softlab/controller/PersonController.java)。

你可以用一个简单的命令来运行整个项目:

docker-compose up -d

要进行测试,请在本地计算机上使用以下两个命令:

  • 创建新人员:
curl -H "Content-Type: application/json" -X POST -d "{\"first\": \"Mustafa\",\"last\": \"KOÇ\",\"dateofbirth\": 381110400000,\"placeofbirth\": \"Erzincan\"}" "http://192.168.99.100:8080/people"
  • 列出数据库中的现有人员:
curl  -H  “Content-Type:application / json”  -X GET “http://192.168.99.100:8080/people”

现在轮到你了!你可以使用这个模板深入研究Java 8和Spring Boot。

相关的参考资料:

Docker入门

本文的版权归 Nikoace 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Icinga和Icinga Web

Icinga是一个灵活而强大的开源监控系统,用于监控网络主机和服务的运行状况。它可用于监视Web worker集群的负载和正常运行时间,存储设备上的可用磁盘空间...

1614
来自专栏郭少华

Vue实战开发

4.新建Fwsb组件,这个相当于程序员的入口文件。在src/components/目录下新建Fwsb.vue文件。文件内容

892
来自专栏有趣的Python

8- Flask构建弹幕微电影网站-后台页面搭建后台页面搭建

已上线演示地址: http://movie.mtianyan.cn 项目源码地址:https://github.com/mtianyan/movie_proj...

3273
来自专栏木头编程 - moTzxx

Redis 的安装与拓展操作指导(Windows+Linux)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

782
来自专栏云计算教程系列

如何使用Apache驱动Django

Django是一个功能强大的Web框架,可以帮助您快速启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码。但是其也需要...

2235
来自专栏王小雷

Spark应用(app jar)发布到Hadoop集群的过程

记录了Spark,Hadoop集群的开启,关闭,以及Spark应用提交到Hadoop集群的过程,通过web端监控运行状态。 1.绝对路径开启集群 (每次集群重启...

1959
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM

前言   承接前文《Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven》,本篇所讲述的是如何使用maven与原s...

4485
来自专栏Netkiller

一次切割日志引发的血案

一次切割日志引发的血案 很多应用程序会产生日志,有些程序已经实现了日志切割,一般是每天一个文件。但有时这个切割并不能满足我们的需求,例如我们需要颗粒度更细的切割...

3638
来自专栏软件开发 -- 分享 互助 成长

source insigt、pc-lint、VS联合使用

前言:     近几天参加公司培训,公司要求,开发的时候使用source insight、PC-lint和VC来编程和调试,这不用不知道,一用吓一跳,这套工具一...

2319
来自专栏JetpropelledSnake

Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件

C:\Users\yangmingwei\PycharmProjects\yangmv> python manage.py startapp web

684

扫码关注云+社区