首页 > 其他分享 >如何在IDEA中实现快速将项目部署在docker上?

如何在IDEA中实现快速将项目部署在docker上?

时间:2023-11-10 18:33:18浏览次数:42  
标签:部署 IDEA server pem cert key ocos docker

Linux系统端

1、安装docker,此过程略。附上在阿里云服务器上部署docker和docker-compose的链接:如何部署并使用Docker_云服务器 ECS-阿里云帮助中心 (aliyun.com)

2、安装完docker后,随便找一个目录(本例的路径是/ocos/docker/cert,也可以选其他的路径,下面要用)创建安全连接docker所需的证书文件,执行如下脚本即可。

#Docker tls script
#!/bin/bash

#settings
SERVER="服务器的IP地址"
PASSWORD="连接密码"
COUNTRY="CN"
STATE="HuBei"
CITY="xxx"
ORGANIZATION=""
ORGANIZATIONAL_UNIT="Dev"
EMAIL="[email protected]"

###start###
echo "script start"

#gen ca.pem - aes256   
openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 4096

openssl req -new -x509 -passin "pass:$PASSWORD" -days 365 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"

#gen server cert
openssl genrsa -out server-key.pem 4096

openssl req -subj "/CN=$SERVER" -sha256 -new -key server-key.pem -out server.csr

echo subjectAltName = IP:$SERVER,IP:0.0.0.0 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

#gen client cert
openssl genrsa -out key.pem 4096

openssl req -subj '/CN=client' -new -key key.pem -out client.csr

echo extendedKeyUsage = clientAuth >> extfile.cnf

openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" \-CAcreateserial -out cert.pem -extfile extfile.cnf

#cert authorized
chmod -v 0400 ca-key.pem key.pem server-key.pem

chmod -v 0444 ca.pem server-cert.pem cert.pem

#del useless file
rm client.csr server.csr

echo "script done"
###end###

3、执行命令:

vim /lib/systemd/system/docker.service

然后找到[Service]中的ExecStart项,在-H fd:// --containerd=/run/containerd/containerd.sock后加上

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --tlsverify --tlscacert=/第二步存放的路径/ca.pem --tlscert=/第二步存放的路径/server-cert.pem --tlskey=/第二步存放的路径/server-key.pem

配置参考:

[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 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --tlsverify --tlscacert=/ocos/docker/cert/ca.pem --tlscert=/ocos/docker/cert/server-cert.pem --tlskey=/ocos/docker/cert/server-key.pem
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

然后执行如下命令刷新配置并重启docker

systemctl daemon-reload
systemctl restart docker

至此Linux端的准备工作就告一段落了,接下来我们配置IDEA

Windows系统端

将刚刚在Linux中创建的证书文件(后缀为pem,文件名为ca、cert、key)复制到Windows上,如图所示

image-20231110172054758

IDEA配置

首先在要在IDEA中安装docker插件,如下图所示

image-20231110165323127

接着选择IDEA左下方的Services中的Docker Connection选项,

image-20231110171342108

在如下窗口中配置:

image-20231110171829237

点击OK保存配置就可以愉快用IDEA地连上Docker了!!!

如果连不上,可能你的服务器安全组没有配置开放2375端口入站

进行项目部署

首先需要对项目进行打包,如图所示
image-20231110182550703

接下来,你就可以在项目根目录创建DockerFiledocker-compose.yml这两个文件了,以SpringBoot为例,这两个文件的内容如下:

DockerFile:

# 该镜像需要依赖的基础镜像
FROM openjdk:17-slim
# 指定维护者的名字
MAINTAINER timqiu
# 将当前目录下的jar包复制到docker容器的/目录下
ADD ./target/ocos-api-0.0.1-SNAPSHOT.jar /ocos-api.jar
# 声明服务运行在8080端口
EXPOSE 8080
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/ocos-api.jar"]

docker-compose.yml:

services:
  redis:
    image: redis
    container_name: ocos_redis
    restart: always
    ports:
      - 6379:6379
    volumes:
      - /ocos/docker/redis/data:/data
      - /ocos/docker/redis/conf/redis.conf:/etc/redis/redis.conf
    command: redis-server /etc/redis/redis.conf
  mysql:
    image: mysql:8
    container_name: ocos_mysql
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: xxxxxx
    volumes:
      - /ocos/docker/mysql/data:/var/lib/mysql
      - /ocos/docker/mysql/conf:/etc/mysql/conf.d
  nginx:
    image: nginx:1.10
    container_name: ocos_nginx
    restart: always
    ports:
      - 80:80
    volumes:
      - /ocos/docker/nginx/html:/usr/share/nginx/html
      - /ocos/docker/nginx/logs:/var/log/nginx
      - /ocos/docker/nginx/conf:/etc/nginx
  rabbitmq:
    image: rabbitmq:management
    container_name: ocos_rabbitmq
    restart: always
    ports:
      - 5671:5671
      - 5672:5672
      - 4369:4369
      - 25672:25672
      - 15671:15671
      - 15672:15672
  mongodb:
    image: mongo:5
    container_name: ocos_mongodb
    restart: always
    ports:
      - 27017:27017
    volumes:
      - /ocos/docker/mongodb/data:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: xxxxxx

标签:部署,IDEA,server,pem,cert,key,ocos,docker
From: https://www.cnblogs.com/timqiu/p/17824794.html

相关文章

  • xixa oraclelinux上kafka集群部署(一)----kafka安装
    kafka部署前提:需要安装jdk1.7以上版本、zookeeper官网下载:http://kafka.apache.org/quickstartkafka配置配置server.properties文件中zookeeper配置,如果集群应该怎么配置?还需要尝试配置kafka集群             在bin目录下面执行......
  • Wazuh开源入侵检测和威胁预防的部署和应用案例
    基本介绍Wazuh是一个免费的开源平台,用于威胁预防、检测和响应。它能够跨本地、虚拟化、容器化和基于云的环境保护工作负载。Wazuh解决方案由部署到受监控系统的端点安全代理和管理服务器组成,该服务器收集和分析代理收集的数据。此外,Wazuh已与ElasticStack完全集成,提供搜索引......
  • 12个常用的IDEA快捷键
    sout:快速生成System.out.println();psvm:快速生成main方法;Ctrl+Alt+V:补全等号左边的变量类型和变量名;Ctrl+Shift+Enter/ Alt+Enter :补全当前行的结束分号,或者在方法名、if后使用可补全小括号和花括号;Shift+Enter:在当前行的下一行创建新行,相当于光标跳转到......
  • docker 移植标准用法(移植到没有网络的环境)
    制作自定义镜像dockerps#查看镜像dockerexec-itidbash#进入容器进行自动修改操作,安装软件通过容器提交制作镜像##-a是作者,-m是提交的记录信息$dockercommit-a"OxyeMa"-m"myOnlyoffice"容器id仓库名:tag保存新镜像,用于后续移植$dockersave-oMyOnl......
  • Ansible自动化部署工具-role模式安装filebeat实际案例分析
    大家好,我是蓝胖子,前面一节我简单的讲了讲Ansible的架构和编排任务的语法,可以发现,通过playbook方式编排任务时,能够将任务文档化,但是在面对比较复杂且不同业务的任务编排时,维护playbook就变得复杂,所以Ansible产生了role模式针对复杂的任务进行编排工作。今天我们就通过一个实际的案......
  • Docker将容器制作成镜像并上传docker hub仓库
    前言在使用docker时候常常需要把自己配置好环境的容器制作成镜像并上传到dockerhub以便之后拉取。本篇文章就是介绍如何将docker容器制作成镜像并上传到dockerhub。背景很多dockerhub上拉下来的镜像,通过修改配置文件等操作,定制成了适合自己的镜像,以后用自己的镜像就可以,因此需要......
  • k8s部署业务服务(详细总结篇)
    1.业务部署说明我们是做算法的,每个算法会被封装成一个镜像,比如:image1(入侵算法),image2(安全带识别算) 结合k8s流程:ingress-nginx(做了hostNetwork:true 网络模式,省去了service的一成转发),直接可以访问ingress-nginx的域名和端口——>客户通过ingress发布的host+path+业务......
  • docker修改宿主机为容器映射的端口
    1.先关闭容器root1@ubuntu22:~$dockerstop0912.再停止docker服务root1@ubuntu22:~$sudostopdocker3.进入配容器置文件目录修改hostconfig.json文件root@ubuntu22:/var/lib/docker/containers/091302dc373cfa10d414a115276a2a18304052721df6f59c85138......
  • docker 搭建 matebase
    环境搭建docker/mnt/docker_data/metabase是你本地一个有权限的目录dockerrun-d-p3000:3000-v/mnt/docker_data/metabase:/tmp-e"MB_DB_FILE=/tmp/metabase.db"--namemetabasemetabase/metabasedocker-compose启动version:'2'services:metabase:ima......
  • 【docker】Mac M1 构建 x64 linux镜像
    亲测教程,跨平台镜像构建[toc]首先首先你需要有一个Dockerfile比如:这里以一个python项目举例FROMpython:3.10-slimWORKDIR/appCOPYrequirements.txtrequirements.txtRUNpipinstall--no-cache-dir-rrequirements.txtCOPY..CMD["python","bin/run.py"]构建......