idea 连接远程 docker 并部署项目到 docker

目录

  • [1. idea 连接远程 docker](#1. idea 连接远程 docker)
    • [1.1 安装 docker 插件](#1.1 安装 docker 插件)
    • [1.2 登录远程服务器,修改docker配置](#1.2 登录远程服务器,修改docker配置)
    • [1.3 添加云服务器防火墙规则](#1.3 添加云服务器防火墙规则)
    • [1.4 idea 配置连接 docker](#1.4 idea 配置连接 docker)
  • [2. 部署项目到 docker](#2. 部署项目到 docker)
    • [2.1 创建并编写Dockerfile](#2.1 创建并编写Dockerfile)
    • [2.2 运行配置](#2.2 运行配置)
  • [3. Nginx 配置](#3. Nginx 配置)

1. idea 连接远程 docker

1.1 安装 docker 插件

1.2 登录远程服务器,修改docker配置

(1) 修改 docker.service 文件,位于 /lib/systemd/system/docker.service

打开该文件,将原来的 ExecStart 前面加上#号注释掉,在该行下面添加 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

[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
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

(2) 重新加载配置
systemctl daemon-reload

(3) 重启 docker 服务
systemctl restart docker.service

1.3 添加云服务器防火墙规则

1.4 idea 配置连接 docker

打开 idea,打开 Setting,在 docker 项配置云服务器tcp://公网IP:2375,点击 ok 即可连上 docker,如下图:

然后,就可以在 Services 中看到 docker 了

点击左边的 connect 就可以连接上 docker,可以看到 docker 中的镜像和容器信息

2. 部署项目到 docker

2.1 创建并编写Dockerfile

我这里将dockerfile 创建在根目录下

dockerfile 文件内容:

dockerfile 复制代码
# 指定基础镜像
FROM openjdk:8-jre-slim
# 作者
MAINTAINER gzl
# 将容器的时区设置为"Asia/Shanghai"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo 'Asia/Shanghai' >/etc/timezone
# 复制主机文件至镜像内,复制的目录需放置在 Dockerfile 文件同级目录下
ADD target/chatgpt-api-0.0.1-SNAPSHOT.jar chatgpt-api.jar
# (和项目端口号等同)
EXPOSE 8080
# 在容器启动时执行该应用程序
ENTRYPOINT ["java", "-jar", "/chatgpt-api.jar"]

2.2 运行配置

(1) 点击 Edit Configurations...

(2) 点击左上角+,找到 dockerfile

(3) 填写配置信息

  • Bind ports:映射端口:项目端口
  • Before launch:
    选择Run Maven Goal,Command line 填写 clean package -U -DskipTests,表示在构建之前清理项目的目标目录,以确保没有旧的构建残留,同时跳过运行单元测试,可加快构建过程

(4) 运行

点击运行

运行成功

3. Nginx 配置

修改 nginx 配置

conf 复制代码
server {

    listen       80;
    server_name  公网ip;

    # 首页
    index index.html;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /api/ {
        auth_request /auth;
        # 鉴权通过后的处理方式
        proxy_pass http://公网ip:8080/success;
    }

    location = /auth {
        # 发送子请求到HTTP服务,验证客户端的凭据,返回响应码
        internal;
        # 设置参数
        set $query '';
        if ($request_uri ~* "[^\?]+\?(.*)$") {
            set $query $1;
        }
        # 验证成功,返回200 OK
        proxy_pass http://公网ip:8080/verify?$query;
        # 发送原始请求
        proxy_pass_request_body off;
        # 清空 Content-Type
        proxy_set_header Content-Type "";
     }

    error_page 404 /404.html;
        location = /40x.html {

        }

    error_page   500 502 503 504  /50x.html;
     location = /50x.html {
     }

}

在浏览器使用公网ip访问

相关推荐
Ops菜鸟(Xu JieHao)2 天前
Dockerfile构建镜像(练习一Apache镜像)(5-1)
服务器·docker·容器·apache·脚本·dockerfile·系统运维
强哥之神21 天前
如何构建一个支持GPU的Llamafile容器
人工智能·机器学习·语言模型·gpu·dockerfile·1024程序员节·llamafile
强哥之神1 个月前
Dockerfile最佳实践:如何创建高效的容器
人工智能·docker·语言模型·k8s·dockerfile·docker镜像·镜像制作
XMYX-01 个月前
深入浅出Dockerfile编写指南
dockerfile
丁总学Java2 个月前
使用dockerfile来构建一个包含Jdk17的centos7镜像(构建镜像:centos7-jdk17)
dockerfile
SilentCodeY2 个月前
docker build前耗时太长,不明所以
运维·docker·容器·镜像·dockerfile
丁总学Java2 个月前
dockerfile部署springboot项目(构建镜像:ebuy-docker:v1.0)
java·spring boot·后端·dockerfile
瞭望清晨2 个月前
Docker容器创建时,无法访问镜像源:Could not connect to archive.ubuntu.com:80
ubuntu·docker·容器·镜像源·dockerfile
kimloner3 个月前
Docker最佳实践进阶(一):Dockerfile介绍使用
运维·docker·容器·dockerfile
亚林瓜子4 个月前
在Mac M1上面使用Dockerfile打x86_64镜像
macos·docker·image·dockerfile·m1·构建·x86_64