原文:https://blog.csdn.net/dgfdhgghd/article/details/127564496
一.安装docker
在linux中执行下面的代码
yum install docker
检查是否安装成功
docker --version
如果出现如下问题,启动时候报错Failed to start docker.service: Unit docker.service not found.
(如下图),原因是CentOS默认使用podman代替docker,所以需要将podman卸载.
https://blog.csdn.net/weixin_53592309/article/details/124695944
https://blog.csdn.net/weixin_53592309/article/details/124695944
systemctl start docker
二、安装docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
安装完后赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
检查是否安装成功
docker-compose --version
但是很多情况下 compose安装会出现问题,我在安装过程中就出现了问题了,我是采用了下面的语句才改好的
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
三、编写Dockfile文件
#依赖jdk8环境 FROM openjdk:8 #对外暴露8085 EXPOSE 8085 #复制server-1.0-SNAPSHOT到docker容器中并命名为app.jar ADD server-1.0-SNAPSHOT.jar app.jar #执行命令 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]
四、编写docker-compose.yml文件
之前需要把如下文件夹都创建好
/root/java_project/www.enshidai.com/nginx/html/ (文件夹) /root/java_project/www.enshidai.com/nginx/nginx.conf (文件夹和文件,nginx.conf 内容见第五部分) /home/mysql/enshidai/data/ (文件夹) /home/mysql/enshidai/conf (文件夹)
docker-compose.yml 如下
version: "3"
services:
nginx: # 服务名称,用户自定义
image: nginx:latest # 镜像版本
# container_name: web-nginx # 容器名字
restart: always # 开机自动重启
ports:
- 80:80 # 暴露端口
volumes: # 挂载
- /root/java_project/www.enshidai.com/nginx/html:/usr/share/nginx/html
- /root/java_project/www.enshidai.com/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
mysql:
image: mysql:5.7.27
ports:
- 3306:3306
volumes:
- /home/mysql/enshidai/data:/var/lib/mysql
- /home/mysql/enshidai/conf:/etc/mysql
restart: always
environment: # 指定用户root的密码
- MYSQL_ROOT_PASSWORD=root
redis:
image: redis:latest
# container_name: web-redis
restart: always
server:
image: server:latest
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 8085:8085
# volumes: # 挂载
# - /usr/image:/usr/image
depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
- mysql
- redis
配置文件中MySQL和Redis的IP地址要改成docker-compose.yml文件中的服务名称。
五、编写Nginx的配置文件nginx.conf
现在宿主机创建html目录和nginx.conf文件
编写配置文件nginx.conf
#user root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name 101.132.143.220; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; index index.html index.htm; } location /api/ { proxy_pass http://101.132.143.220:8085; proxy_redirect default; rewrite ^/api/(.*) /$1 break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
六、部署前端
前端打包
npm run build
打包成功之后,将dist文件夹中文件全部复制到服务器的 /root/nginx/html 目录中
七、部署后端
在linx服务器中创建路径 /root/java_project
先将后端打成jar包,然后上传到云服务器上的java_project中,同时Dockfile文件和docker-compose.yml文件也要上传到云服务器上。
最后,编排启动服务
docker-compose up -d
还有记得把sql导入到服务器中mysql