摘要:为了不让别人痛苦,更不想让自己痛苦,请容器化开发环境吧,让我们享受一键部署开发环境的痛快吧。接下的例子依赖的环境和,请移步自行安装。
有没有过项目之间各种Java版本开发环境切换的场景;有没有过github上clone回来的代码库,由于各种开发环境依赖无法运行的问题;有没有过进入一个新项目时各种配开发环境到深夜的经历...Come On!为什么会这样,一切都是开发环境问题。为了不让别人痛苦,更不想让自己痛苦,请容器化开发环境吧,让我们享受一键部署开发环境的痛快吧。
用什么容器化呢?当然是Docker啦,轻量级又好用,又流行,最关键点是本人仅Docker比较熟悉,所以就拿它来搞起啦。
Quick Start接下的例子依赖的Docker环境和MAC,请移步 Install Docker Engine 自行安装。
docker-machine
docker-compose
...
(dockerize) Unable to get the latest Boot2Docker ISO release version: Error getting a version tag from the Github API response. (dockerize) You may be getting rate limited by Github. // 如果在安装过程遇到上述类似的问题,可以尝试方式解决: 通过浏览器下载 boot2docker 镜像 https://github.com/boot2docker/boot2docker/releases/download/v1.10.3/boot2docker.iso 将镜像移动到 ~/.docker/machine/cache/ 目录下Setup Hello Dockerize
使用Gradle初始化一个 spring-boot DEMO,build.gradle 文件如下:
group "com.xxx.hello.dockerize" version "1.0.0" buildscript { repositories { jcenter() maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE") } } apply plugin: "idea" apply plugin: "java" apply plugin: "spring-boot" sourceCompatibility = 1.8 repositories { jcenter() maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } } ext { junitVersion = "4.11" } dependencies { compile "org.springframework.boot:spring-boot-starter-jersey" testCompile "junit:junit:$junitVersion" }
实现hello-dockerize的API,创建以下文件:
DockerizeApplication.java
JerseyConfig.java
HelloDockerizeResource.java
为可以让 DEMO 可以运行容器中,需要一个Dockerfile来配置 DEMO 在容器中能正常运行的环境:
FROM ubuntu:14.04 RUN apt-get update ENV VERSION 8 ENV UPDATE 66 ENV BUILD 17 ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-oracle ENV JRE_HOME ${JAVA_HOME}/jre RUN apt-get install ca-certificates curl gcc libc6-dev libssl-dev make -y --no-install-recommends RUN curl --silent --location --retry 3 --cacert /etc/ssl/certs/GeoTrust_Global_CA.pem --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/"${VERSION}"u"${UPDATE}"-b"${BUILD}"/server-jre-"${VERSION}"u"${UPDATE}"-linux-x64.tar.gz | tar xz -C /tmp RUN mkdir -p /usr/lib/jvm && mv /tmp/jdk1.${VERSION}.0_${UPDATE} "${JAVA_HOME}" RUN apt-get install -y openssl RUN apt-get remove --purge --auto-remove -y gcc libc6-dev libssl-dev make RUN apt-get autoclean && apt-get --purge -y autoremove RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN update-alternatives --install "/usr/bin/java" "java" "${JRE_HOME}/bin/java" 1 && update-alternatives --install "/usr/bin/javac" "javac" "${JAVA_HOME}/bin/javac" 1 && update-alternatives --set java "${JRE_HOME}/bin/java" && update-alternatives --set javac "${JAVA_HOME}/bin/javac" WORKDIR /hello-dockerize EXPOSE 8080 CMD ["bash"]
为了以后可以更好的管理容器的依赖和更新,Docker Compose是一个不错的选择。创建配置文件docker-compose.yml:
web: build: ./dockerize environment: - LANG=C.UTF-8 - TERM=xterm - DEBUG=true ports: - "8080:8080" volumes: - .:/hello-dockerize
启动容器服务:
在 DEMO 目录下执行:
$ docker-compose run --service-ports web
上述命令执行成功后,将会进入容器内,显示如:
root@7b438758ccae:/hello-dockerize#
在容器中启动服务:
root@7b438758ccae:/hello-dockerize# ./gradlew bootRun
为了在容器外可以访问容器内部的服务,可以通过docker-machine ip machine-name获取 machine 的 IP,修改/etc/hosts将machine IP绑定上dockerhost的域名,再通过浏览器访问http://dockerhost:8080/hello-dockerize,页面将会出现Hello Dockerize!
DEMO REPO: hello-dockerize,你只需要 clone 到本地,然后执行 docker-compose run --service-ports web, DEMO 开发环境将会快速构建完毕,秒级的体验,不容错过~~~
原文链接
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26737.html
摘要:上一篇容器化开发环境已经简单的介绍了如何容器化开发环境。学会断点调试容器中的应用,再也不用为我那乌黑亮丽的头发着急啦原文链接 上一篇容器化开发环境已经简单的介绍了如何容器化开发环境。在开发过程中,很多时候都需要通过断点的方式来调试程序或定位BUG,那么如何断点调试运行在容器中的应用呢??? 容器就像一个虚拟机,就像一个远程的服务器,要断点调试容器中的应用,就像要断点调试虚拟机和远程的服...
摘要:上一篇容器化开发环境数据库连接和迁移分享了关于如何给容器中的应用创建数据库连接,接下来将分享一下如何将数据库从应用容器中分离出来。 上一篇容器化开发环境 - 数据库连接和迁移分享了关于如何给容器中的应用创建数据库连接,接下来将分享一下如何将数据库从应用容器中分离出来。 为什么要进行分离?当应用和数据库在同一个容器中运行时,也就意味着,应用和数据库的生命周期捆绑在了一起,应用和数据库的运...
摘要:在容器化开发环境中分享了如何容器化本地的开发环境。对于一个应用,数据库似乎是必不可少的东西。下面会通过例子来介绍一下如何一个容器中的数据库。例子将会使用的技术栈在目录下新建文件,用于控制数据库的启动。 在 容器化开发环境 中分享了如何容器化本地的开发环境。对于一个Web应用,数据库似乎是必不可少的东西。下面会通过例子来介绍一下如何Setup一个容器中的数据库。例子将会使用的技术栈: ...
摘要:为了证明模板,我们可以使用环境变量配置让这个变成一个更通用的代理服务器。我们将定义环境变量作为一个站点的代理。当这个容器使用这个环境变量启动,将使用它来生成一个的路径。 一种 Dockerize 应用的简单方式 标签(空格分隔): Docker dockerize 作者是 jasonwilder。原文地址是 A Simple Way to Dockerize Applica...
阅读 813·2021-11-18 10:07
阅读 2306·2021-10-14 09:42
阅读 5220·2021-09-22 15:45
阅读 567·2021-09-03 10:29
阅读 3444·2021-08-31 14:28
阅读 1854·2019-08-30 15:56
阅读 3023·2019-08-30 15:54
阅读 975·2019-08-29 11:32