一、部署Docker
Docker安装
1、更新系统
yum update
2、安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加 Docker YUM 软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4、安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io
5、启动 Docker 服务
systemctl status docker
systemctl start docker
systemctl enable docker
6、验证安装
docker --version
Docker常用命令
-
查看已安装镜像
docker images
-
下载镜像
docker pull tomcat:8.5.84
[镜像名:版本号] -
运行镜像
docker run -d redis
其中-d表示在后台运行 -
删除镜像、
docker rmi cfb42a7627ea
-
查看正在运行的容器
docker ps
-
查看所有的容器
docker ps -a
-
进入容器
docker exec -it 2c66a2604c61 bash
-
停止容器
docker stop e20d261fc976
-
开启容器
docker start e20d261fc976
-
删除容器
docker rm [ID]
-
搜索镜像
docker search <keyword>
二、环境配置
2.1 MySQL
-
拉取MySQL镜像
docker pull mysql
-
运行 MySQL 容器
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=Qihangec@168* -d -p 3307:3306 mysql
--name my-mysql
:为容器指定一个名称。-e MYSQL_ROOT_PASSWORD=Qihangec@168*
:设置 MySQL 的 root 用户密码。-d
:在后台模式下运行容器。-p 3307:3306
:将主机的3307端口映射到容器的3306端口。
-
连接到 MySQL 容器
docker exec -it my-mysql bash
-
进入 MySQL 命令行
mysql -uroot -p
-
修改远程访问密码
ALTER USER 'root'@'%' IDENTIFIED BY 'Qihangec@168*';
flush privileges;
-
2.2 Redis
-
拉取 Redis 镜像
docker pull redis
-
运行 Redis 容器
docker run -d -p 6378:6379 --name my-redis redis
2.3 Nacos
-
拉取Nacos镜像
docker pull nacos/nacos-server
-
运行 Nacos 容器
docker run --name nacos-server -e PREFERRED_NAMING_USE_RPC=true -e MODE=standalone -p 8849:8848 -d nacos/nacos-server
docker run --name nacos-server -e MODE=standalone -p 8849:8848 -p 9848:9848 -d nacos/nacos-server
-
访问 Nacos 控制台
112.44.181.231:8849/nacos
Java项目读不到Docker Nacos配置
https://blog.csdn.net/hmq1350167649/article/details/122432510
https://blog.csdn.net/keypanj2ee/article/details/118725971
2.4 minio
三、运行项目
3.1 后端运行
制作Dockerfile
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY ecerp-api-0.2.0.jar .
CMD ["java", "-jar", "ecerp-api-0.2.0.jar"]
构建 Docker 镜像
docker build -t ecerpapi .
运行 Docker 容器
docker run --name ecerpapi -p 8081:8080 -d ecerpapi
3.2 前端Nginx运行
拉取nginx镜像
docker pull nginx
创建挂载目录
- nginx_logs :日志文件目录
/opt/qihangerp/nginx_logs
- nginx_conf :配置文件目录
/opt/qihangerp/nginx_conf
- nginx_web :项目文件目录(这里可以存放web文件)
/opt/qihangerp/nginx_web
赋权限:
chmod 777 /opt/qihangerp/nginx_logs
chmod 777 /opt/qihangerp/nginx_conf
chmod 777 /opt/qihangerp/nginx_web
创建容器并挂载目录
挂载操作会直接将两个文件夹内容同步,若是直接用宿主机的空文件夹直接挂载到容器内部的配置文件目录上,会造成nginx容器配置文件目录被同步为空文件夹,进而导致容器启动失败。故我们需要先启动一遍容器,将初始配置拷贝出来。
启动容器并拷贝出nginx初始配置
- 创建容器
docker run -itd --name nginx -p 80:80 nginx
- 复制容器配置文件到宿主机
docker cp nginx:/etc/nginx /opt/qihangerp/nginx_conf
删除容器
-
删除容器
docker rm -f nginx
修改Nginx配置(增加后台api转发)
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
重新运行容器并挂载目录
docker run -itd --name nginx -p 80:80 -v /opt/qihangerp/nginx_web:/usr/share/nginx/html -v /opt/qihangerp/nginx_conf/nginx:/etc/nginx -v /opt/qihangerp/nginx_logs:/var/log/nginx nginx
访问web
http://ip:80