Docker开启远程访问+idea配置docker+dockerfile发布java项目

一、docker开启远程访问

1.编辑docker服务文件
java 复制代码
vim /usr/lib/systemd/system/docker.service

docker.service原文件如下:

java 复制代码
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service time-set.target
Wants=network-online.target containerd.service
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500


[Install]
WantedBy=multi-user.target

找到ExecStart头添加代码如图所示:

java 复制代码
-H tcp://0.0.0.0

添加完成,如下图标记

2.重启docker的daemon服务
java 复制代码
systemctl daemon-reload
3.重启docker服务
java 复制代码
systemctl restart docker
4.开启防火墙指定端口:2375
java 复制代码
firewall-cmd --zone=public --add-port=2375/tcp --permanent
5.重启防火墙
java 复制代码
firewall-cmd --reload
6.进入浏览器中访问:http://ip:2375/version

如图所示

能够访问到该页面说明已经开启了远程访问。

二、idea配置docker

1.进入idea,进入目录:File-Settings-Plugins搜索:docker,并安装:如图:

2.配置docker,进入目录:File-Settings-Build,Execution,Deployment

如图:

Engine API URL:

java 复制代码
tcp://ip:2375

最后点击Apply,再点击ok

3.在配置docker部署时就可以选择以上添加的docker了

如图:

三、编写一个java Demo,使用dockerfile部署

项目工程如下:

代码展示:HelloWorldController.java

java 复制代码
package com.hcl.helloworld.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("hello")
public class HelloWorldController {

    @GetMapping("world")
    public String hello(){
        return "蜉蝣之羽,衣裳楚楚。<br/>"+
                "心之忧矣,於我归处?<br/>" +
                "蜉蝣之翼,采采衣服。<br/>" +
                "心之忧矣,於我归息?<br/>" +
                "蜉蝣掘阅,麻衣如雪。<br/>" +
                "心之忧矣,於我归说?";
    }
}

代码展示:HelloWorldApplication.java

java 复制代码
package com.hcl.helloworld;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloWorldApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }

}

代码展示:application.yaml

java 复制代码
server:
  port: 8081

代码展示:Dockerfile

java 复制代码
# 指定环境镜像作为该容器的基础环境,如springboot应用最起码得有jdk环境
FROM openjdk:8

# 执行维护者信息
MAINTAINER abliner

# 创建一个存放工程的目录
RUN mkdir -p /data/project-bak

ADD target/hello-world-0.0.1-SNAPSHOT.jar /data/project-bak/hello-world-0.0.1-SNAPSHOT.jar

# 对外暴露的端口
EXPOSE 8084

# 执行启动
ENTRYPOINT ["/bin/sh","-c","java -jar /data/project-bak/hello-world-0.0.1-SNAPSHOT.jar"]

四、开始配置

1.进入配置,如图:
2.添加docker,选择Dockerfile如图:
3.如图

最后点击Apply再点击ok
注意:dockerfile中对外暴露的端口也就是上面配置的端口"8084"开启防火墙的一定要去开放端口,否则无法访问。如果是阿里云上面则也要配置打开该端口。

4.idea打包项目,先clear再package,保证是最新的包

如图:

5.启动

如图:

6.访问
相关推荐
呆萌小新@渊洁14 分钟前
后端接收数组,集合类数据
android·java·开发语言
A_cot1 小时前
深入了解 Maven 和 Redis
java·redis·maven
liuyang-neu1 小时前
力扣中等 33.搜索旋转排序数组
java·数据结构·算法·leetcode
爱吃烤鸡翅的酸菜鱼1 小时前
java(3)数组的定义与使用
java·开发语言·idea·intellij idea
ganjiee00071 小时前
力扣(leetcode)每日一题 2414 最长的字母序连续子字符串的长度
java·算法·leetcode
kingbal1 小时前
SpringBoot:解析excel
java·开发语言·excel
远望樱花兔2 小时前
【d44】【Java】【力扣】160.相交链表
java·开发语言·leetcode
山塘小鱼儿2 小时前
java学习路线
java
Leighteen2 小时前
如何在微服务的日志中记录每个接口URL、状态码和耗时信息?
java·开发语言
梦睡了2 小时前
SpringBoot+thymeleaf竞赛报名系统
java·spring boot·毕设