失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > docker部署mysql项目_一 在docker下部署java mysql的独立项目环境

docker部署mysql项目_一 在docker下部署java mysql的独立项目环境

时间:2022-07-29 16:05:24

相关推荐

docker部署mysql项目_一 在docker下部署java mysql的独立项目环境

相信有很多同学跟我一样,在部署系统的时候,有很多代码都丢在不同的服务器上,不同的环境中,经常为了环境问题一搞搞半天。安全性问题也很突出,代码都是别人写的,有问题也没办法啊,特别是部署在一台服务器上的代码,被黑是正常,没被黑是幸运。一旦被黑可能所有的数据库都被人拖走了或者删除了啊。

java代码tomcat部署麻烦,还需要这里设置哪里设置,搞不定啊。

最近我自己写了一个java代码,想部署到服务器上,希望可以用docker把数据库和java的网络帮到一起,让mysql只能让java访问,其它项目要用的mysql通过docker跟这个项目的完全隔离,减少安全问题了。

我用spring boot做框架,打包成jar,java的配置文件,tomcat都打包在了jar包里,部署的话省事多了。

但是为了隔离环境还是需要docker来搞,我的想法是mysql也用docker来起,不装物理机,mysql和web用两个docker,网络是同一网络,最好是同一个网卡内部互访用127.0.0.1访问。

经过测试配置如下:

首先我希望将jar打包到docker中,不用每次拷来拷去,也可以用文件夹,提前定义一个文件夹,把jar包放进去docker启动时自动启动jar包。

打包需要用到dockerfile文件,在运行目录下创建Dockerfile配置如下:

FROM openjdk:8-jdk-alpine

ENV LANG C.UTF-8

RUN apk --update add ttf-dejavu && \

rm -rf /var/cache/apk/*

MAINTAINER "haolin#"

LABEL description="suishoupai backend"

WORKDIR app

ADD ruoyi-admin.jar /app/app.jar

EXPOSE 8081

CMD java -jar /app/app.jar

FROM openjdk:8-jdk-alpine 是说我们用的基础镜像是openjdk发布的8-jdk-alpine包,用alpine linux打包的。

ENV LANG C.UTF-8 是说我们要采用UTF-8环境

RUN apk --update add ttf-dejavu && \ rm -rf /var/cache/apk/*

是安装字体库并删除缓存的安装包,字体库是用来生成验证码等功能使用。

MAINTAINER 、LABEL description,请自行设置

WORKDIR app工作目录这个不需要修改

ADD test-admin.jar /app/app.jar 添加jar包到镜像中,如果是开发环境可以放在目录里,跟打包进去是一样的。

CMD java -jar /app/app.jar 启动jar包,按照自己的需要设置启动参数。

完成之后执行docker build -t 用户名/镜像名:1.01 . 就可以完成镜像封装了

通过docker image ls查看镜像就能看到打好的镜像包。

打包完java镜像之后就需要打包mysql镜像了,首先在运行目录下创建docker-compose.yaml。

想让两个docker共用一个ip,我觉得通过docker-compose配置更清晰,主要思路是创建两个service:

一个app服务使用我们的java镜像,网络模式设置为service:mysql就可以使用mysql的网卡,

一个mysql服务,使用mysql:5.7这里需要注意默认的mysql使用的编码方式不支持中文,需要配置,并设置时区:

command:

--character-set-server=utf8mb4

--collation-server=utf8mb4_general_ci

--explicit_defaults_for_timestamp=true

--lower_case_table_names=1

--max_allowed_packet=128M

--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"

environment:

TZ: Asia/Shanghai

而后可以有选择的配置要创建的数据库名、root密码等。

最后将mysql的data目录映射到项目目录下的data目录,并将app中的端口发布出来。共外界访问。

配置完成之后通过:

docker-compose up创建镜像

通过docker-compose start启动镜像

通过docker-compose stop停止镜像

docker-compose down删除镜像。

启动后可以通过docker ps查看已启动的服务,或者通过docker ps -a查看所有服务。

完整配置文件。如下:

version: '3'

services:

app:

container_name: XXXX_app

image: haol666/XXXX:1.01

network_mode: "service:mysql"

depends_on:

- mysql

mysql:

container_name: xxxx_mysql

image: mysql:5.7

command:

--character-set-server=utf8mb4

--collation-server=utf8mb4_general_ci

--explicit_defaults_for_timestamp=true

--lower_case_table_names=1

--max_allowed_packet=128M

--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"

environment:

TZ: Asia/Shanghai

MYSQL_DATABASE: XXXX

MYSQL_ROOT_PASSWORD: XXXX

MYSQL_USER: 'XXXX'

MYSQL_PASS: 'XXXX'

MYSQL_HOST: '%'

volumes:

- ./data:/var/lib/mysql

ports:

- "8080:443"

expose:

- "8080"

如果觉得《docker部署mysql项目_一 在docker下部署java mysql的独立项目环境》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。