docker-compose部署Nginx+Redis+Mysql+SpringBoot服务

请提前安装 docker 和 docker-compose

1. 打包springboot项目, 并给redis和mysql起别名 (配置都是用的服务名而不是ip地址)

docker-compose部署Nginx+Redis+Mysql+SpringBoot服务_第1张图片

docker-compose部署Nginx+Redis+Mysql+SpringBoot服务_第2张图片

2. 新建目录, 并上传jar包

mkdir -P /data/zc_travel

3. 创建并编辑 Dockerfile 文件 (要和jar放在同一个目录)

提供下载 Dockerfile

链接: https://pan.baidu.com/s/1t4wdrh9_cxGytdDMWDXpoQ?pwd=s5h3 
提取码: s5h3 
vim Dockerfile 
FROM java:8
EXPOSE 8080
 
VOLUME /tmp
 
ENV TZ-Asia /Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone
 
ADD ruoyi-admin.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

 4. 创建并编辑 docker-compose.yml文件 (要和jar放在同一个目录)

提供下载 docker-compose.yml

链接: https://pan.baidu.com/s/1ysXfc9xuXMHu6fAgVh9f8g?pwd=erah 
提取码: erah
vim docker-compose.yml
version: '3'

services:

    nginx:
        container_name: nginx
        image: nginx:1.14.2
        environment:
            - TZ=Asia/Shanghai
        ports:
            - "80:80"
        volumes:
            - ./config/nginx/conf.d:/etc/nginx/conf.d
#            - ./data/nginx/:/usr/share/nginx/html/
            - ./log/nginx/:/var/log/nginx/
        restart: always

    redis:
        container_name: zcredis
        image: redis:4.0.10
        environment:
            - TZ=Asia/Shanghai
        ports:
            - "6379:6379"
        volumes:
            - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
            - ./data/redis/:/data/
            - ./log/redis/:/var/log/redis/
        command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes --requirepass PanGuanQing_19910917
        restart: always

    mysql:
        container_name: zcmysql
        image: mysql:5.7
        environment:
            TZ: Asia/Shanghai
            MYSQL_DATABASE: zc_travel
            MYSQL_ROOT_PASSWORD: PanGuanQing_19910917
            MYSQL_ROOT_HOST: '%'
        ports:
            - "3306:3306"
        volumes:
            - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
            - ./data/mysql/:/var/lib/mysql/
            - ./data/init/:/docker-entrypoint-initdb.d/
            - ./log/mysql/:/var/log/mysql/
        command: [
            '--character-set-server=utf8mb4',
            '--collation-server=utf8mb4_unicode_ci',
          #这行代码解决无法访问的问题
            '--default-authentication-plugin=mysql_native_password'
        ]
        security_opt:
            - seccomp:unconfined
        restart: always

    mazhichu:
        container_name: mazhichu
        build:
            context: .
            dockerfile: Dockerfile
        environment:
            TZ: Asia/Shanghai
            spring.datasource.host: mysql
            spring.redis.host: redis
        ports:
          - "8009:8009"
        depends_on:
            - nginx
            - redis
            - mysql
        restart: always

docker-compose格式解释:

version: ‘3’: 表示使用第三代语法来构建 docker-compose.yaml 文件。
services: 用来表示 compose 需要启动的服务,上面的配置文件中有四个服务分别为:nginx、redis、mysql还有我的项目mazhichu。
Image:指定下载镜像版本
container_name: 指定容器名称
environment: 此节点下的信息会当作环境变量传入容器,例如mysql 服务配置了数据库、密码和权限信息。
ports: 表示对外开放的端口
volumes: 加载本地目录下的配置文件到容器目标地址下
restart: always 表示如果服务启动不成功会一直尝试。
depends_on:配置依赖服务,表示需要先启动 depends_on 下面的服务后,再启动本服务。
links:与depends_on相对应,depends_on控制启动顺序,links控制容器连接问题。值为"服务名:别名"或者直接使用服务名

5. 先启动mysql容器

docker-compose up -d mysql

连接mysql, 导入sql文件

6. 启动全部容器

docker-compose up -d

7. 查看已启动的容器

docker ps -a

 

8. 查看日志信息

docker logs -f --tail 10 容器ID

9. 访问项目

docker-compose部署Nginx+Redis+Mysql+SpringBoot服务_第3张图片

你可能感兴趣的:(docker,docker,容器,运维)