在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初体验,创建并导出第一个本地镜像

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

873
来自专栏吴伟祥

使用 Dockerfile定制Java Web镜像

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

994
来自专栏纯洁的微笑

Docker(三):Dockerfile 命令详解

上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dock...

3516
来自专栏我的小碗汤

搭建个私有docker镜像仓库

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

2593
来自专栏哎_小羊

Maven 插件之 docker-maven-plugin 的使用

目录 docker-maven-plugin 介绍 环境、软件准备 Demo 示例 配置 DOCKER_HOST 示例构建镜像 指定构建信息到 POM 中构...

6886
来自专栏圣杰的专栏

.NET Core容器化@Docker

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

2367
来自专栏Hongten

python开发_tarfile_文档归档压缩|解压缩

如果在你计算机的c:\\test目录下面没有temp目录,系统会自动创建该目录:c:\\test\\temp

762
来自专栏腾讯云容器服务团队的专栏

如何搭建及使用 docker registry

本文通过 Docker Compose 搭建了一个简单的 registry 环境,使用的是 docker hub官方镜像,registry 镜像版本 regis...

1.3K0
来自专栏LuckQI

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

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

1033
来自专栏刺客博客

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

2053

扫码关注云+社区