docker-compose部署Java后端+Vue前端

安装docker和docker-compose

安装docker参考我另一篇博客:docker安装

安装docker-compose:

  1. 下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  1. 授权
chmod +x /usr/local/bin/docker-compose
  1. 创建软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  1. 测试是否安装成功
docker-compose --version
docker-compose.yml 配置文件编写
version: '3.8'
services:
  nginx:
    image: nginx:1.20
    privileged: true
    restart: always
    network_mode: "host"
    volumes:
      - /usr/local/tool/nginx/dist:/usr/share/nginx/html/dist
      - /usr/local/tool/nginx/nginx.conf:/etc/nginx/nginx.conf
      - /usr/local/tool/nginx/cert:/usr/local/nginx/cert
      - /usr/local/tool/nginx/logs:/var/log/nginx
  mysql:
    image: mysql:8.0.28
    ports:
      - 3306:3306
    privileged: true
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_ROOT_PASSWORD=mysql@2022
    volumes:
      - /usr/soft/mysql-3306/conf:/etc/mysql
      - /usr/soft/mysql-3306/logs:/var/log/mysql
      - /usr/soft/mysql-3306/data:/var/lib/mysql
      - /usr/soft/mysql-3306/mysql-files:/var/lib/mysql-files
  redis:
    image: redis:6.0
    ports:
      - 6379:6379
    privileged: true
    restart: always
    command: ["redis-server" ,"--appendonly" ,"yes" ,"--requirepass" ,"redis@2022"]
    volumes:
      - /usr/soft/redis-6379/redis.conf:/usr/local/etc/redis/redis.conf
      - /usr/soft/redis-6379/data:/data
  tool:
    image: tool-service:1.0
    build: .
    privileged: true
    restart: always
    network_mode: "host"
    volumes:
      - /home/tool/uploadPath:/home/tool/uploadPath
      - /home/tool/logs:/home/tool/logs
    depends_on:
      - mysql
      - redis

其中的version需要跟docker的版本相对应,以下是官网给出对应关系列表:

官网地址:官网docker与docker-compose对应关系地址
docker-compose部署Java后端+Vue前端_第1张图片
这是对应的部分介绍:
docker-compose部署Java后端+Vue前端_第2张图片
nginx.conf配置:

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # HTTPS server
    server {
        listen 443 ssl;
        server_name  localhost;

        ssl_certificate      /usr/local/nginx/cert/server.crt;
        ssl_certificate_key  /usr/local/nginx/cert/server.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

                location / {
            root   /usr/share/nginx/html/dist;
                        try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }

                location /backend/{
                       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;
                       client_max_body_size 20M;
                       proxy_send_timeout 500;
                       proxy_read_timeout 480;
                       proxy_pass http://localhost:8999;
               }

                error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

当进行到Java的后端项目时,需要先写对应的Dockerfile与打包后jar包,都需要在与yml文件在同一目录下。
Dockerfile内容如下:

#基础镜像通过java8来的
FROM java:8
#将当前文件中所有*.jar  拷贝到项目的app.jar中(这个app.jar是自己生成的)
COPY *.jar /app.jar
#映射地址
CMD ["--server.prot=8999"]
#暴露端口
EXPOSE 8999
#执行命令java  -jar
ENTRYPOINT ["java","-jar","/app.jar"]

这是我对应的目录结构:
docker-compose部署Java后端+Vue前端_第3张图片
就在这个目录下,输入命令docker-compose up -d之后,就可以启动项目了。

当想将项目停掉,输入命令docker-compose down。但是如果Java代码修改之后,需要将原先的docker镜像删除之后再重新启动。

docker-compose常用命令
# 1. 基于docker-compose.yml启动管理的容器
docker-compose up -d
# 2. 关闭并删除容器
docker-compose down
# 3. 开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
# 4. 查看由docker-compose管理的容器
docker-compose ps
# 5. 查看日志
docker-compose logs -f
docker-compose.yml配置指令参考
# 指定本 yml 依从的 compose 哪个版本制定的
version
# 构建镜像上下文路径
build
	context:上下文路径。
	dockerfile:指定构建镜像的 Dockerfile 文件名。
	args:添加构建参数,这是只能在构建过程中访问的环境变量。
	labels:设置构建镜像的标签。
	target:多层构建,可以指定构建哪一层
# 开启权限
cap_add
# 关闭权限
cap_drop
# 为容器指定父 cgroup 组,意味着将继承该组的资源限制
cgroup_parent
# 覆盖容器启动的默认命令
command
# 指定自定义容器名称,而不是生成的默认名称
container_name
# 设置依赖关系
depends_on
# 指定与服务的部署和运行有关的配置
deploy
# 自定义 DNS 服务器
dns
# 覆盖容器默认的 entrypoint
entrypoint
# 文件添加环境变量
env_file
# 添加环境变量
environment
# 暴露端口
expose
# 指定容器运行的镜像
image
# 服务的日志记录配置
logging
# 设置网络模式
network_mode
# 将主机的数据卷或着文件挂载到容器里
volumes

你可能感兴趣的:(docker,Liunx,Java,docker,java,vue.js)