体验了容器带来的便捷,我更好奇的是如何将自己的项目部署在Docker的镜像中

我很久以前做了一个简单的博客,那我现在就以这样项目为基础,那我的项目需要mysql数据库

那就先安装一个mysql

pull一个mysql镜像

$ docker pull mysql

运行mysql

$ docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=123456 mysql

MYSQL_ROOT_PASSWORD=123456 设置的mysql的服务密码

这个有一个坑就是,你得先交互式进入容器,否则使用Navicat无法连接,其次还需要关闭防火墙

$ systemctl stop firewalld
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
1080a17ee857        mysql               "docker-entrypoint.s…"   2 hours ago         Up 42 minutes      0.0.0.0:3306->3306/tcp, 33060/tcp   festive_dhawan
$ docker exec -it 1080a17ee857 /bin/bash
$ mysql -uroot -p
$ Enter password: 123456

这个时候就可以使用工具连接了

基础的准备完成后,还需要构建一个简单的镜像,我们现在构建一个简单的blog镜像

首先上传我的blog.jar,再创建一个Dockerfile文件

# 指定基础镜像
FROM openjdk:8
# 复制文件
ADD blog.jar blog.jar
ENTRYPOINT ["java", "-jar", "blog.jar"]
# 开启指定的端口
EXPOSE 8090

构建blog镜像

$ docker build -t blog .
查看镜像
$ docker images
运行镜像
$ docker run -p 8090:8090 -d blog

访问:http://192.168.1.102:8090/

同时IDEA也提供了打包镜像和发布的功能,我们来测试一下是如何操作的

1、修改DockerTCP连接

$ vim /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd-current 后面加上-H tcp://0.0.0.0:9190 -H unix://var/run/docker.sock
刷新docker配置
$ systemctl daemon-reload
$systemctl start docker

2、使用IDEA连接Docker

IDEA-->File--> Settings-->Build,Execution,Deployment-->Docker-->TCP socket-->Engune API URL:tcp://192.168.1.102:9191

不出意外的话,应该会正常连接
docker.png

3、开始打包镜像

Crete Deployment Configuration

Image ID or name配置镜像的id或者是名称

Container name容器取一个名字

Bind ports绑定端口
docker1.png

确定运行该镜像即可,同样访问:http://192.168.1.102:8090/,两种方式均可