利用docker-compose部署项目(vue、nginx、springBoot、mysql)

一、环境搭建

系统环境 :CentOS7

1、docker安装

1、删除旧版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者

curl -sSL https://get.daocloud.io/docker | sh

启动docker

systemctl start docker

测试安装结果

docker -v

在这里插入图片描述

2、docker-compose安装

1、卸载旧版本
2、安装docker-compase

curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

将可执行权限应用于二进制文件

chmod +x /usr/local/bin/docker-compose

测试安装结果

docker-compose -v

在这里插入图片描述

二、项目介绍

1、前端

在这里插入图片描述

2、后端

在这里插入图片描述

----------application.yml的mysql名称注意和docker-compose.yml里的服务名保持一致----------
在这里插入图片描述在这里插入图片描述

三、文件编写

1、2制作路径 home/docker
3制作路径 home/docker/nginx

1、创建Dockerfile文件

FROM java:8 是指含有jdk1.8的镜像
COPY index-0.0.1-SNAPSHOT.jar spring-cas.jar 意思是,将当前目录下面的 index-0.0.1-SNAPSHOT.jar复制命名为spring-cas.jar到容器中,复制后的名字可以自定义。
COPY application.yml prod.yml 复制配置文件到dockers容器中
EXPOSE 8994 意思就是开放内部端口8100,就是与springboot项目application.yml的项目端口号一致。
ENTRYPOINT [“java”,“-jar”,“/spring-cas.jar”,“–spring.config.location=/prod.yml”] 就是制作镜像完成最后执行的命令

# 环境
FROM java:8

# 暴露的端口
# EXPOSE 8080

# 将jar包添加到容器内并改名为app.jar
ADD docker-0.0.1-SNAPSHOT.jar app.jar

#运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2、创建docker-compose.yml文件

----------compose默认会找docker-compose.yaml和docker-compose.yml----------
images 镜像版本
ports 暴露端口
volumes 挂载

version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  
    ports:
      - 9527:9527 
    volumes:
      - /home/pro/workpase/nginx/html:/usr/share/nginx/html
      - /home/pro/workpase/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  mysql:
    image: mysql:5.7.27
    ports:
    - 3306:3306
    environment: # 指定用户root的密码
      - MYSQL_ROOT_PASSWORD=123456
    volumes: # 持久化数据库数据
      - /home/mysql/conf:/etc/mysql/conf.d
      - /home/mysql/data:/var/lib/mysql
  app:
    image: app:latest #镜像来源 名字跟Dockerfilce保持
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
      - 8080:8080
    volumes:
      - /home/docker:/data
    depends_on:
      - mysql

3、创建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       9527;
        server_name  localhost;
        location / {
            root   /usr/share/nginx/html;
			try_files $uri $uri/ /index.html last; # 别忘了这个哈
            index  index.html index.htm;
        }
        #跨域配置
        location /api/{
        	proxy_pass http://192.168.136.132:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

四、项目部署

1、打包vue项目dist内文件复制到home/docker/nginx/html
在这里插入图片描述
2、jar包复制到docker文件下
在这里插入图片描述
docker-compose up -d 开始编排
在这里插入图片描述
测试
在这里插入图片描述

五、常用命令

linux
1、创建文件夹:mkdir
2、创建文件:touch
3、删除文件夹:rm -rf
4、重命名为nginx.conf:mv nginx nginx.conf
5、查看当前位置:pwd

docker
1、查看镜像:docker images
2、查看容器:docker ps
3、查看全部容器:docker ps -a
4、强制删除镜像:docker rmi -f [镜像名]
5、启动镜像:docker run -d -p 8080:8080 --name[运行时的容器名] [要启动的镜像]
6、强制删除所有镜像:docker rmi -f $(docker images -q)
7、启动一个伪终端以交互式的方式进入某个容器:docker exec -it [容器名] bin/bash(使用exit退出后容器不停止运行)
8、保存镜像: docker save -o [保存的文件名称] [要保存的镜像]
9、导入保存的镜像:docker load -i [保存的文件名称]

docker-compose
1、编排:docker-compose up -d
2、重新编排:docker-compose up -d --build
3、停止:docker-compose stop
4、删除容器:docker-compose rm
5、查看镜像:docker-compose images
6、查看运行的容器:docker-compose ps
7、重启compose服务:docker-compose restart
8、查看日志:docker-compose logs -f

六、项目可能遇到的问题

1、docker容器正常运行但无法访问
1.最后一行添加:net.ipv4.ip_forward=1

vi /etc/sysctl.conf

2.重启network服务

systemctl restart network

3.查看是否修改成功

sysctl net.ipv4.ip_forward

如果返回为“net.ipv4.ip_forward = 1”则表示成功了
2、mysql不能远程连接问题
授权法
1.要求用户 ‘username’,使用密码 ‘password’ 可以从任何主机连接到mysql服务器

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.要求仅允许IP为192.168.0.1使用用户名 ‘username’,密码 'password’连接到mysq

GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.0.1' IDENTIFIED BY 'password' WITH GRANT OPTION;

3.要求仅允许IP为192.168.0.1使用用户名 ‘username’,密码 'password’连接到mysql服务器的dbname数据库

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'192.168.0.1' IDENTIFIED BY 'password' WITH GRANT OPTION;

刷新特权

FLUSH PRIVILEGES;
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
docker-compose中配置nacos的跨域可以通过修改nginx.conf文件来实现。根据给出的引用,我们可以看到docker-compose中的nginx服务使用了一个挂载的nginx.conf文件。因此,我们可以在该文件中进行跨域配置。 具体的步骤如下: 1. 打开挂载的nginx.conf文件,该文件路径为/pook/nginx/nginx.conf。 2. 在文件中找到http模块下的server模块。 3. 在server模块中添加以下配置代码来实现跨域: ``` location / { # 允许的域名 add_header Access-Control-Allow-Origin *; # 允许的请求方法 add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; # 允许的请求头 add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization"; # 允许携带凭证(cookie) add_header Access-Control-Allow-Credentials true; } ``` 4. 保存文件并重启docker-compose服务。 这样,你就成功配置了docker-compose中nacos的跨域设置。现在,nacos将允许来自任何域的请求,并支持常用的请求方法和头部信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Nginx部署前段VUE---docker-compose编排方式](https://blog.csdn.net/weixin_42437633/article/details/108932338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值