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

相关文章

来自专栏程序员笔记

Docker 学习手册

24540
来自专栏史上最简单的Spring Cloud教程

史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目

一、docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地...

51560
来自专栏耕耘实录

Docker初体验,创建并导出第一个本地镜像

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

16130
来自专栏吴伟祥

使用 Dockerfile定制Java Web镜像

对使用 Docker 搭建 Java Web 运行环境(利用 commit 理解镜像构成  来源:黄勇 )的博文的归纳:

21240
来自专栏Samego开发资源

Dockerfile再恋笔记 | 详解篇

31230
来自专栏刺客博客

基于Docker制作H5ai+SSH+Aria2镜像(附带Dockerfile)

30830
来自专栏雨过天晴

原 centos 编译安装git

19740
来自专栏我的小碗汤

搭建个私有docker镜像仓库

但是这个私有仓不能满足我们的需求,生产线上万一该私有仓服务器故障,其他服务器也无法接管。再者,也没有页面可以便于管理。

91830
来自专栏圣杰的专栏

.NET Core容器化@Docker

温馨提示:本文适合动手演练,效果更佳。 ?  1. 引言 我们知道. NET Core最大的特性之一就是跨平台,而对于跨平台,似乎大家印象中就是可以在非Wi...

31970
来自专栏LuckQI

Docker容器中学习系列十一~一个利器DockerFile指令详解

在我们学习容器中我们往往都会用到DockerFile这个文件,在前两篇的文章中,我们也着重的使用了DockerFile这个文件用来构建我们使用的容器,这样可以用...

13530

扫码关注云+社区

领取腾讯云代金券