体验了容器带来的便捷,我更好奇的是如何将自己的项目部署在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、修改Docker
的TCP
连接
$ 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
不出意外的话,应该会正常连接
3、开始打包镜像
Crete Deployment Configuration
Image ID or name
配置镜像的id或者是名称
Container name
容器取一个名字
Bind ports
绑定端口
确定运行该镜像即可,同样访问:http://192.168.1.102:8090/
,两种方式均可