用intellij idea玩转jhipster docker compose 开发

  1. centos 安装docker
    1. 查看系统负载状况
    2.查看系统版本 cat /etc/redhat-release
    3.docker centos安装官方文档 https://docs.docker.com/engine/install/centos/
  2. 安装过程(省略optional步骤)
yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io

如果遇到selinux问题,按如下:

wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
rpm -ivh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
  1. 设置docker 随系统启动
systemctl enable docker

可选项:安装镜像

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ziojtg51.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. Docker 开启远程访问
    a. 修改docker 服务文件
vi /lib/systemd/system/docker.service
修改ExecStart
~~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
b. systemctl daemon-reload
    systemctl restart docker.service
    netstat -nlpt #如果没有netstat命令, yum install net-tools
    查看是否生效
    curl http://ip:2375/info
  1. 安装docker compose
    参考 https://docs.docker.com/compose/install/
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

以下暴露2375端口,只作为临时测试,测试完后注意及时关闭,否则很快会被黑客扫描到.完全做法是通过本文后面的ssl连接.
6. idea 连接docker
在这里插入图片描述
同时配置上仓库信息,以dockerhub为例,如下图:
在这里插入图片描述

在这里插入图片描述
如下命令可在连接的docker里面生成相应的image
如果是用的本地安装的docker,则要加上–offline,
mvnw -Pprod package -DskipTests=true -Dskip.npm -Dskip.webpack verify jib:dockerBuild --offline
执行完以上命令后,docker中会生成app的image,如下图:
在这里插入图片描述
如果是远程推送到https://hub.docker.com/,则需修改pom.xml中jib插件的配置,如下图
在这里插入图片描述
然后运行如下命令,即可推送到dockerhub仓库:
mvnw -Pprod package -DskipTests=true -Dskip.npm -Dskip.webpack verify jib:build
可参考jhipster官方 https://www.jhipster.tech/docker-compose/
推送完后,dockerhub 仓库中就有该应用的镜像了,如下:
在这里插入图片描述
此时可以在docker中拉取该应用的镜像了,如下:
在这里插入图片描述
(或者可以直接略过此步骤,到下一步之际运行app.yml,更方便.但是要注意修改应用的image名称.jhipster自动生成的image名是del, 要在前面加上你在dockerhub的用户名,否则拉取不到.示例如图:)
在这里插入图片描述

然后就可以找到jhipster自动生成的app.yml文件运行了,如下图
在这里插入图片描述
结合下图mysql.yml 中的描述,避免我遇到的坑.
在这里插入图片描述
如果启动app,遇到如下情况,半天不动弹,可以考虑一下你的云服务器是不是资源不够了,停掉一些服务吧.
作者遇到这种情况时,以为时连接不上Mysql呢,折腾了半天.希望读者遇到这种情况时可以考虑这方面的问题.
在这里插入图片描述
好了,大功告成.访问8380即可看到熟悉的首页:
在这里插入图片描述
如果遇到如下错误,试试重启docker: service docker restart, 开启防火墙后,需要重启docker.
Failed to Setup IP tables: Unable to enable SKIP DNAT rule

如果mysql 挂载了宿主机的目录,如下图:如果以后修改了environment的设置,比如增加了密码,要生效的话,需要对挂载的目录进行下操作. 我目前的做法是把data下的东西,删掉了事.这样重新运行compose文件就生效了.
在这里插入图片描述
debug java app in idea using docker
https://www.jetbrains.com/help/idea/debug-a-java-application-using-a-dockerfile.html

以上docker连接没有安全机制,容易被黑客利用.暂时可以用临时开启/关闭防火墙端口 预防.

以下介绍开启远程docker ssl连接:
参考官方文档: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl
mkdir -p /usr/local/ca
cd /usr/local/ca
openssl genrsa -aes256 -out ca-key.pem 4096
随后需要输入国家省市等信息, 最后生成ca-key.pem
openssl genrsa -out server-key.pem 4096
openssl req -subj “/CN=$HOST” -sha256 -new -key server-key.pem -out server.csr

按照文档,直到这一步
$ chmod -v 0444 ca.pem server-cert.pem cert.pem
下面不按照文档说的,我们改下docker的配置文件:

vi /lib/systemd/system/docker.service

ExecStart修改如下:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
修改完后执行如下命令生效

systemctl daemon-reload
systemctl restart docker.service

然后将以下文件:key.pem,ca.pem,ca-key.pem,cert.perm拷贝到本地文件夹(ca), idea 即可配置certificate folder如下,idea 即可通过ssl连接啦!
在这里插入图片描述
在这里插入图片描述

以下关于centos7 防火墙的一些命令,看官可跳过
查看防火墙是否启动:
systemctl status firewalld.service
启动防火墙
systemctl start firewalld.service
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
关掉端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
重启防火墙,让设置生效
firewall-cmd --reload
停止防火墙
firewall systemctl stop firewalld.service
禁止firewall开机启动
firewall systemctl disable firewalld.service

启用防火墙开机启动
systemctl enable firewalld

关于docker的一些常用命令
让nginx开机启动
docker update nginx --restart=always
查看nginx日志
docker logs nginx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值