Docker Compose实例

目录

一、前提说明

二、简单的Docker容器部署案例

1. Dockerfile 配置

2. docker-compose.yml 配置

3. application.properties 配置

4. pom.xml 配置

5. 上传文件

6. 创建基础Docker镜像

7. docker-compose.yml编排

8. 停止并删除容器编排


一、前提说明

在配置好Docker和Docker Compose之后,部署一个JavaWeb项目。

使用到 spingboot+mysql+redis 

二、简单的Docker容器部署案例

1. Dockerfile 配置

# 基于那个镜像使用 java
# FROM openjdk:8-oracle
FROM java:8

# 作者
MAINTAINER cj

# 在主机 /var/lib/docker 目录下创建一个临时文件,并链接到容器的 /tmp
VOLUME /tmp

# 将jar包添加到容器中,并命名为 springboot_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar /springboot_docker.jar

# 运行jar包
RUN bash -c 'touch /springboot_docker.jar'
ENTRYPOINT ["java", "-jar", "/springboot_docker.jar"]

# SpringBoot项目配置的端口号为 19311,需要将 19311 暴露出去
EXPOSE 19311

2. docker-compose.yml 配置

# docker-compose文件版本号
version: "3"

# 配置各个容器服务
services:
  # 定义名为 microService 的服务
  microService:
    # 使用 springboot_docker:1.1 镜像作为容器
    image: springboot_docker:1.1
    # 设置容器的名称为 ms01
    container_name: ms01  # 容器名称,如果不指定,会生成一个服务名加上前缀的容器名
    # 将容器内部端口 19311 映射到宿主机端口 19311
    ports:
      - "19311:19311"
    # 挂载宿主机的 /app/microService 目录到容器内的 /data 目录
    volumes:
      - /app/microService:/data
    # 连接到名为 springboot_network 的自定义网络
    networks:
      - springboot_network
    # 定义 microService 服务依赖的其他服务
    depends_on:
      - redis
      - mysql

  # 定义名为 redis 的服务
  redis:
    # 使用 redis:6.0.8 镜像作为容器
    image: redis:6.0.8
    # 主机端口:容器内部端口
    ports:
      - "6479:6379"
    # 挂载宿主机的 redis 配置文件和数据目录到容器内
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    # 连接到名为 springboot_network 的自定义网络
    networks:
      - springboot_network
    # 指定容器启动命令为 redis-server /etc/redis/redis.conf
    command: redis-server /etc/redis/redis.conf

  # 定义名为 mysql 的服务
  mysql:
    # 使用 mysql:latest 镜像作为容器
    image: mysql:latest
    # 设置 MySQL 的环境变量
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'boot_docker'
      MYSQL_USER: 'cj'
      MYSQL_PASSWORD: '123456'
    # 将容器内部端口 3306 映射到宿主机端口 3406
    # 主机端口:容器内部端口
    ports:
      - "3406:3306"
    # 挂载宿主机的 MySQL 数据库文件、配置文件和初始化脚本到容器内
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    # 连接到名为 springboot_network 的自定义网络
    networks:
      - springboot_network
    # 指定容器启动命令为 --default-authentication-plugin=mysql_native_password
    command: --default-authentication-plugin=mysql_native_password # 解决外部无法访问

# 定义自定义网络 springboot_network
networks:
  springboot_network:

3. application.properties 配置

# 设置服务器端口号为 19311
server.port=19311
# ======================== Alibaba Druid 数据库连接池配置 ======================
# 设置数据源类型为 Alibaba Druid 数据库连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 设置数据库驱动类名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 设置数据库连接地址、字符集等相关信息
#spring.datasource.url=jdbc:mysql://192.168.153.133:3307/boot_docker?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
# 将IP更换成容器名
spring.datasource.url=jdbc:mysql://mysql:3306/boot_docker?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
# 设置数据库用户名
spring.datasource.username=root
# 设置数据库密码
spring.datasource.password=123456
# 设置 Druid 连接池的 test-while-idle 属性为 false,表示在空闲时不测试连接是否有效
spring.datasource.druid.test-while-idle=false
# ======================== Redis 缓存配置 ======================
# 设置 Redis 数据库编号
spring.redis.database=0
# 设置 Redis 主机地址
#spring.redis.host=192.168.153.133
# 将IP更换成容器名
spring.redis.host=redis
# 设置 Redis 端口号
spring.redis.port=6379
# 设置 Redis 密码
spring.redis.password=123456
# 设置 Redis 连接池的一些属性
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
# ======================== MyBatis 配置 ====================
# 设置 MyBatis 的映射文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
# 设置 MyBatis 实体类别名所在的包路径
mybatis.type-aliases-package=com.wang.docker.entities
# ======================== Swagger 配置 ======================
# 启用 Swagger2 API 文档生成
spring.swagger2.enabled=true

4. pom.xml 配置




    4.0.0

    
    
        
        org.springframework.boot
        spring-boot-starter-parent
        2.5.6
         
    

    
    com.atguigu.docker
    docker_boot
    0.0.1-SNAPSHOT

    
    
        UTF-8
        1.8
        1.8
        
        4.12
        1.2.17
        1.16.18
        8.0.30
        1.1.17
        4.1.5
        1.3.0
        2.9.2
    

    
    
        
        
            com.google.guava
            guava
            23.0
        
        
        
            org.redisson
            redisson
            3.13.4
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            io.springfox
            springfox-swagger2
            ${swagger.version}
        
        
            io.springfox
            springfox-swagger-ui
            ${swagger.version}
        
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
        
            org.springframework.boot
            spring-boot-starter-cache
        
        
        
            org.apache.commons
            commons-pool2
        
        
        
            redis.clients
            jedis
            3.1.0
        
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
        
        
            com.alibaba
            druid-spring-boot-starter
            ${druid.version}
        
        
            com.alibaba
            druid
            ${druid.version}
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybatis.spring.boot.version}
        
        
        
            commons-codec
            commons-codec
            1.10
        
        
        
            cn.hutool
            hutool-all
            5.2.3
        
        
        
            junit
            junit
            ${junit.version}
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            log4j
            log4j
            ${log4j.version}
        
        
        
            org.projectlombok
            lombok
            ${lombok.version}
            true
        
        
        
            javax.persistence
            persistence-api
            1.0.2
        
        
        
            tk.mybatis
            mapper
            ${mapper.version}
        
    

    
    
        
            
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
            
                org.apache.maven.plugins
                maven-resources-plugin
                3.1.0
            
        
    

5. 上传文件

上传文件到CentOS中,创建一个mydocker的文件夹,将打包的jar、Dockerfile、docker-compose.yml放在同一级目录中。如同:

Docker Compose实例_第1张图片

ps:以下命令需要在包含jar包、Dockerfile、docker-compose.yml目录下进行,不然可能会出现找不到文件的错误

6. 创建基础Docker镜像

docker build -t springboot_docker:1.1 .

7. docker-compose.yml编排

编写完成docker-compose.yml后,进行语法检查

# 进行语法检查
docker-compose config -q

如果语法检查没有任何问题,进行创建、启动

docker-compose up -d

8. 停止并删除容器编排

docker-compose down

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