在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 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

使用VS Code开发asp.net core (下)

本文是基于Windows10的. Debugging javascript 打开wwwroot/js/site.js, 写一段简单的js代码: (functio...

3115
来自专栏Porschev[钟慰]的专栏

sql2008 附加数据库时 错误5123

今天重装了一下家里电脑的数据库 在附加己有数据库时,出现5123错误 错误载图 image.png 解决方法: 1.直接把己有数据库复制到sql安装目录下C:...

1687
来自专栏Zachary46

Android直接用手机打包apk!

本人用的是Mac,以下操作都是在Mac环境下配置的,Windows环境的配置移步到Android使用Jenkins自动化构建测试打包apk

883
来自专栏Coding01

使用 docker-compose 搭建 Laravel 环境 (三)

有了第二篇《使用 Docker 搭建简易的 Java Web 环境 (二)》,懂了如何通过单一镜像创建 Docker 环境,这篇主要学习如何使用「docker-...

723
来自专栏散尽浮华

分享一例测试环境下nginx+tomcat的视频业务部署记录

需求说明: 在测试环境下(192.168.1.28)部署一套公司某业务环境,其中: 该业务前台访问地址: http://testhehe.wangshibo.c...

18810
来自专栏Hadoop实操

如何在Hue中使用Sentry

3.集群已安装Sentry服务,已和HDFS/Hive/Impala/Hue服务集成

6307
来自专栏IT综合技术分享

在Linux mint 18上安装IntelliJ IDEA开发环境

952183763c239acc48a99f4b29c767aa9ab89b1f83d8dc5917e6e61952fbfcf8 *ideaIU-2017.2....

783
来自专栏小白客

学习SQL【1】-搭建SQL的学习环境

最近我在学习SQL,现在就开始记录我的学习过程吧,加油!如果你也想学SQL,希望我的学习记录能对你有所帮助。 PostgreSQL是对象关系型数据库管理系统...

3176
来自专栏Albert陈凯

将已有项目代码通过命令行方式上传到github,简易傻瓜教程(图文)将已有项目代码通过命令行方式上传到github,傻瓜教程(图文)1. 创建一个github项目2. 在Repository name

将已有项目代码通过命令行方式上传到github,傻瓜教程(图文) 本文地址:http://www.jianshu.com/p/6030066a20e4 git...

3026
来自专栏吴小龙同學

Android Studio和Genymotion安装常见错误

整装出发,新的环境,新的开始,加油,骚年。新公司,首先需要安装Android的开发环境,由于被墙,Android Studio首次启动就被卡,Genymoti...

2647

扫码关注云+社区