首先要准备好需要的文件
先单独run一下jar包看是否能正常运行。
先将jar包变成镜像
dockerfile文件
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER heyingdong
# VOLUME 指定了临时文件目录为/tmp。
# 这会在容器内创建一个匿名卷并挂载到/tmp目录
VOLUME /tmp
# 将jar包添加到容器中并更名为mysb.jar
ADD mycommunity-0.0.1-SNAPSHOT.jar mysb.jar
RUN bash -c 'touch /mysb.jar'
#运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/mysb.jar"]
#暴露8181端口
EXPOSE 8181
运行dockerfile
docker build -f dockerfile -t mysb:1.0 .
查看镜像
dcoker images
run一下
docker run --name mysb011 -p 9002:8181 -d mysb:1.0
看一下是否启动成功
docker ps
启动成功后使用psotman检测一下能否正常访问
可以访问到就ok
下面使用docker-compose来实现以下整个项目的部署
先上compose文件
version: '3.0' #编排技术版本号
services: #多个服务
myspringboot:
image: mysb:1.0
ports:
- 8181:8181
networks:
- hydcom
mysql3306:
image: mysql:8
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
TZ: Asia/Shanghai
volumes:
- /www/dokcerfile/mysqlinit/:/docker-entrypoint-initdb.d/
networks:
- hydcom
redis6379:
image: redis
ports:
- 6379:6379
volumes:
- /www/dokcerfile/redis.conf/:/etc/redis/redis.conf
networks:
- hydcom
mynginx:
image: nginx
ports:
- 80:80
restart: always
volumes:
- /www/dokcerfile/nginx/html/:/usr/share/nginx/html/
- /www/dokcerfile/nginx/nginx.conf:/etc/nginx/nginx.conf
networks:
- hydcom
networks:
hydcom:
这个东西是不是看着挺眼熟的,其实就是单独run时候的-p、-v命令只不过是将所有容器写到一起了,因为上面已经创建了镜像所以这个docker-compose.yml文件中没有打包镜像的部分,一步到位的话就加一个bulid然后再指定一下dockerfile文件就可以了。
下面解释一下这个yml文件里的内容myspringboot就是我们的jar包,使用我们刚刚制作的镜像mysb:1.0,mysql使用8的版本,给出root用户的密码并指定时区,init文件夹里是一个init.sql文件,用来开启远程连接,下面是init.sql的内容。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
redis也有个配置文件需要挂载,修改配置文件里的这四个就可以了
# bind 127.0.0.1
protected-mode no
port 6379
daemonize yes
nginx需要挂载两个,一个是他的conf文件,一个是他的html文件
html文件里面就放我们打包好的前端就可以,
conf文件简单提一下
这个位置是要指向你nginx容器的并不是指定你挂载的服务器的路径。
然后就可以启动了
docker-compose up -d
执行命令后会自己下载docker里没有的镜像,然后自己启动。
查看一下启动的容器
docker ps
可以看到四个配置文件中的容器均已启动,
现在进入浏览器输入ip及端口号来访问一下
可以看到验证码已经加载出来了,这里的话就说明jar包、redis、还有nginx没有问题了,因为没有向数据库中导入数据,所以这里使用navicat 连接一下看是否可以连接来测试其是否可用。
测试成功
写的比较仓促,可能存在不少纰漏,请大家指正,感谢!