【Java】如何用docker部署一个开源的项目

如何用docker部署一个开源的项目

mall4j发布于 今天 02:40

目标:使用Docker部署商城(Mysql + Redis + Java后端 + Vue前端)

以下部署以开源商城 mall4j 为例子,链接见:

  • gitee: https://gitee.com/gz-yami/mall4j

  • github: https://github.com/gz-yami/mall4j

实验环境:Linux Centos7

0: 系统准备

准备一个干净的系统(避免被其他因素影响),系统使用以下ISO(自行安装,安装过程略):
http://mirrors.163.com/centos...

1:安装Docker

参考资料:https://docs.docker.com/engin...

卸载旧版本残留

sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

安装docker

sudo yum install -y yum-utils

sudo yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install -y docker-ce docker-ce-cli containerd.io

启动docker服务

sudo systemctl start docker

设置docker开机自启动

sudo systemctl enable docker

【Java】如何用docker部署一个开源的项目

2: 镜像加速

(这一步选做)因为默认镜像仓库在国外,速度较慢,我们可以使用阿里云的镜像加速服务:

【Java】如何用docker部署一个开源的项目

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

我们可以输入docker info查看是否成功修改默认镜像地址:

sudo docker info

【Java】如何用docker部署一个开源的项目

3:上传文件到服务器

mysql:

本地编辑好mysql配置文件

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

data文件夹是数据持久化(一开始没数据,容器运行后才会产生数据,所以是空文件夹),my.cnf是配置文件,initdb文件夹是初始化数据
my.cnf内容如下:

[client]

default-character-set = utf8mb4

[mysql]

# 设置mysql客户端默认字符集

default-character-set = utf8mb4

[mysqld]

# 设置3306端口

port = 3306

# 服务端使用的字符集默认为latin1

character-set-server = utf8mb4

# 创建新表时将使用的默认存储引擎

default-storage-engine = INNODB

# 让MySQL不区分大小写

lower_case_table_names=1

java后端

【Java】如何用docker部署一个开源的项目

java的admin的dockerfile文件内容如下:

FROM anapsix/alpine-java:8_server-jre_unlimited

RUN mkdir -p /opt/projects/yami-shops

WORKDIR /opt/projects/yami-shops

COPY ./yami-shop-admin-0.0.1-SNAPSHOT.jar ./

EXPOSE 8111

CMD java -jar -Xms1024m -Xmx1024m -Xss256k -XX:SurvivorRatio=8 -Dspring.profiles.active=docker,quartz yami-shop-admin-0.0.1-SNAPSHOT.jar

【Java】如何用docker部署一个开源的项目

java的api的dockerfile文件内容如下:

FROM anapsix/alpine-java:8_server-jre_unlimited

RUN mkdir -p /opt/projects/yami-shops

WORKDIR /opt/projects/yami-shops

COPY ./yami-shop-api-0.0.1-SNAPSHOT.jar ./

EXPOSE 8086

CMD java -jar -Xms1024m -Xmx1024m -Xss256k -XX:SurvivorRatio=8 -Dspring.profiles.active=docker yami-shop-api-0.0.1-SNAPSHOT.jar

nginx

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

配置文件内容如下:

server {

listen 80;

server_name 192.168.1.26;

location / {

root /usr/share/nginx/html/mall4j-admin;

}

location /apis {

rewrite ^/apis/(.*)$ /$1 break;

proxy_pass http://mall4j-admin:8111;

}

error_page 404 /404.html;

location = /404-light.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

使用winscp上传到服务器

【Java】如何用docker部署一个开源的项目

4:创建并启动容器

先创建一个自定义的docker网络(用于容器之间互通):

docker network create mall4j-network

创建并运行mysql容器

docker run --name mall4j-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --restart=always -v /root/mall4j/mysql/my.cnf:/etc/mysql/my.cnf -v /root/mall4j/mysql/initdb:/docker-entrypoint-initdb.d -v /root/mall4j/mysql/data:/var/lib/mysql --network mall4j-network -d mysql:5.7.33

解释一下以下参数:
--name mall4j-mysql 指定容器名称
-p 映射容器端口到宿主机端口
-e 环境变量
MYSQL_ROOT_PASSWORD=root 设置默认密码为root
--restart=always 重启docker时自动启动容器
-v 挂载宿主机目录或文件
--network mall4j-network 连接到指定的自定义网络
-d 容器保持后台运行

创建并运行redis容器

docker run --name mall4j-redis -p 6379:6379 --restart=always --network mall4j-network -d redis:5.0.10

进入admin文件夹

cd /root/mall4j/yami-shop-admin

构建镜像(不要漏了最后的小数点)

docker build -t yami-shop-admin:0.0.1 .

创建并运行java容器(使用-e环境变量来指定数据库url等参数)

docker run --name mall4j-admin -e TZ=Asia/Shanghai -e MYSQL_HOST=mall4j-mysql -e MYSQL_PORT=3306 -e MYSQL_DATABASE=yami_shops -e MYSQL_USERNAME=root -e MYSQL_PASSWORD=root -e REDIS_HOST=mall4j-redis -e REDIS_PORT=6379 -e REDIS_DATABASE=0 -e REDIS_PASSWORD= -p 8111:8111 -v /root/mall4j/yami-shop-admin/log:/opt/projects/mall4j/log --restart=always --network mall4j-network -d yami-shop-admin:0.0.1

进入api文件夹

cd /root/mall4j/yami-shop-api

构建镜像(不要漏了最后的小数点)

docker build -t yami-shop-api:0.0.1 .

创建并运行java容器(使用-e环境变量来指定数据库url等参数)

docker run --name mall4j-api -e TZ=Asia/Shanghai -e MYSQL_HOST=mall4j-mysql -e MYSQL_PORT=3306 -e MYSQL_DATABASE=yami_shops -e MYSQL_USERNAME=root -e MYSQL_PASSWORD=root -e REDIS_HOST=mall4j-redis -e REDIS_PORT=6379 -e REDIS_DATABASE=0 -e REDIS_PASSWORD= -p 8086:8086 -v /root/mall4j/yami-shop-api/log:/opt/projects/mall4j/log --restart=always --network mall4j-network -d yami-shop-api:0.0.1

创建并运行nginx容器

docker run --name mall4j-nginx -p 80:80 -v /root/mall4j/nginx/conf.d:/etc/nginx/conf.d -v /root/mall4j/nginx//html:/usr/share/nginx/html --restart=always --network mall4j-network -d nginx:1.18.0

【Java】如何用docker部署一个开源的项目

5:访问网站

因为验证码是从java后端获取的,如果打开页面能获取验证码,说明实验成功,默认账号密码admin 123456

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

java架构设计docker

阅读 43发布于 今天 02:40

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

mall4j

9 声望

0 粉丝

0 条评论

得票时间

avatar

mall4j

9 声望

0 粉丝

宣传栏

目标:使用Docker部署商城(Mysql + Redis + Java后端 + Vue前端)

以下部署以开源商城 mall4j 为例子,链接见:

  • gitee: https://gitee.com/gz-yami/mall4j

  • github: https://github.com/gz-yami/mall4j

实验环境:Linux Centos7

0: 系统准备

准备一个干净的系统(避免被其他因素影响),系统使用以下ISO(自行安装,安装过程略):
http://mirrors.163.com/centos...

1:安装Docker

参考资料:https://docs.docker.com/engin...

卸载旧版本残留

sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

安装docker

sudo yum install -y yum-utils

sudo yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install -y docker-ce docker-ce-cli containerd.io

启动docker服务

sudo systemctl start docker

设置docker开机自启动

sudo systemctl enable docker

【Java】如何用docker部署一个开源的项目

2: 镜像加速

(这一步选做)因为默认镜像仓库在国外,速度较慢,我们可以使用阿里云的镜像加速服务:

【Java】如何用docker部署一个开源的项目

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

我们可以输入docker info查看是否成功修改默认镜像地址:

sudo docker info

【Java】如何用docker部署一个开源的项目

3:上传文件到服务器

mysql:

本地编辑好mysql配置文件

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

data文件夹是数据持久化(一开始没数据,容器运行后才会产生数据,所以是空文件夹),my.cnf是配置文件,initdb文件夹是初始化数据
my.cnf内容如下:

[client]

default-character-set = utf8mb4

[mysql]

# 设置mysql客户端默认字符集

default-character-set = utf8mb4

[mysqld]

# 设置3306端口

port = 3306

# 服务端使用的字符集默认为latin1

character-set-server = utf8mb4

# 创建新表时将使用的默认存储引擎

default-storage-engine = INNODB

# 让MySQL不区分大小写

lower_case_table_names=1

java后端

【Java】如何用docker部署一个开源的项目

java的admin的dockerfile文件内容如下:

FROM anapsix/alpine-java:8_server-jre_unlimited

RUN mkdir -p /opt/projects/yami-shops

WORKDIR /opt/projects/yami-shops

COPY ./yami-shop-admin-0.0.1-SNAPSHOT.jar ./

EXPOSE 8111

CMD java -jar -Xms1024m -Xmx1024m -Xss256k -XX:SurvivorRatio=8 -Dspring.profiles.active=docker,quartz yami-shop-admin-0.0.1-SNAPSHOT.jar

【Java】如何用docker部署一个开源的项目

java的api的dockerfile文件内容如下:

FROM anapsix/alpine-java:8_server-jre_unlimited

RUN mkdir -p /opt/projects/yami-shops

WORKDIR /opt/projects/yami-shops

COPY ./yami-shop-api-0.0.1-SNAPSHOT.jar ./

EXPOSE 8086

CMD java -jar -Xms1024m -Xmx1024m -Xss256k -XX:SurvivorRatio=8 -Dspring.profiles.active=docker yami-shop-api-0.0.1-SNAPSHOT.jar

nginx

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

配置文件内容如下:

server {

listen 80;

server_name 192.168.1.26;

location / {

root /usr/share/nginx/html/mall4j-admin;

}

location /apis {

rewrite ^/apis/(.*)$ /$1 break;

proxy_pass http://mall4j-admin:8111;

}

error_page 404 /404.html;

location = /404-light.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

使用winscp上传到服务器

【Java】如何用docker部署一个开源的项目

4:创建并启动容器

先创建一个自定义的docker网络(用于容器之间互通):

docker network create mall4j-network

创建并运行mysql容器

docker run --name mall4j-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --restart=always -v /root/mall4j/mysql/my.cnf:/etc/mysql/my.cnf -v /root/mall4j/mysql/initdb:/docker-entrypoint-initdb.d -v /root/mall4j/mysql/data:/var/lib/mysql --network mall4j-network -d mysql:5.7.33

解释一下以下参数:
--name mall4j-mysql 指定容器名称
-p 映射容器端口到宿主机端口
-e 环境变量
MYSQL_ROOT_PASSWORD=root 设置默认密码为root
--restart=always 重启docker时自动启动容器
-v 挂载宿主机目录或文件
--network mall4j-network 连接到指定的自定义网络
-d 容器保持后台运行

创建并运行redis容器

docker run --name mall4j-redis -p 6379:6379 --restart=always --network mall4j-network -d redis:5.0.10

进入admin文件夹

cd /root/mall4j/yami-shop-admin

构建镜像(不要漏了最后的小数点)

docker build -t yami-shop-admin:0.0.1 .

创建并运行java容器(使用-e环境变量来指定数据库url等参数)

docker run --name mall4j-admin -e TZ=Asia/Shanghai -e MYSQL_HOST=mall4j-mysql -e MYSQL_PORT=3306 -e MYSQL_DATABASE=yami_shops -e MYSQL_USERNAME=root -e MYSQL_PASSWORD=root -e REDIS_HOST=mall4j-redis -e REDIS_PORT=6379 -e REDIS_DATABASE=0 -e REDIS_PASSWORD= -p 8111:8111 -v /root/mall4j/yami-shop-admin/log:/opt/projects/mall4j/log --restart=always --network mall4j-network -d yami-shop-admin:0.0.1

进入api文件夹

cd /root/mall4j/yami-shop-api

构建镜像(不要漏了最后的小数点)

docker build -t yami-shop-api:0.0.1 .

创建并运行java容器(使用-e环境变量来指定数据库url等参数)

docker run --name mall4j-api -e TZ=Asia/Shanghai -e MYSQL_HOST=mall4j-mysql -e MYSQL_PORT=3306 -e MYSQL_DATABASE=yami_shops -e MYSQL_USERNAME=root -e MYSQL_PASSWORD=root -e REDIS_HOST=mall4j-redis -e REDIS_PORT=6379 -e REDIS_DATABASE=0 -e REDIS_PASSWORD= -p 8086:8086 -v /root/mall4j/yami-shop-api/log:/opt/projects/mall4j/log --restart=always --network mall4j-network -d yami-shop-api:0.0.1

创建并运行nginx容器

docker run --name mall4j-nginx -p 80:80 -v /root/mall4j/nginx/conf.d:/etc/nginx/conf.d -v /root/mall4j/nginx//html:/usr/share/nginx/html --restart=always --network mall4j-network -d nginx:1.18.0

【Java】如何用docker部署一个开源的项目

5:访问网站

因为验证码是从java后端获取的,如果打开页面能获取验证码,说明实验成功,默认账号密码admin 123456

【Java】如何用docker部署一个开源的项目

【Java】如何用docker部署一个开源的项目

以上是 【Java】如何用docker部署一个开源的项目 的全部内容, 来源链接: utcz.com/a/111450.html

回到顶部