四个路径

  • conf
  • db
  • html
  • jar
services:
  imusic-mysql:
    container_name: imusic-mysql
    image: imusic-mysql:v1.0
    build:
      context: .
      dockerfile: mysql-dockerfile
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=80M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: ry-vue
      MYSQL_ROOT_PASSWORD: 123456
    networks:
      - community
  imusic-redis:
    container_name: imusic-redis
    image: imusic-redis:v1.0
    build:
      context: .
      dockerfile: redis-dockerfile
    ports:
      - "6379:6379"
    volumes:
      - ./conf/redis.conf:/home/imusic/redis/redis.conf
      - ./redis/data:/data
    command: redis-server /home/imusic/redis/redis.conf
    networks:
      - community
  imusic-minio:
    container_name: imusic-minio
    image: imusic-minio:v1.0
    build:
      context: .
      dockerfile: minio-dockerfile
    ports:
      - "9000:9000"
      - "9090:9090"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    volumes:
      - ./minio/data:/home/imusic/minio/data
      - ./minio/config:/root/.minio/
    command: server --console-address ':9090' /home/imusic/minio/data
    networks:
      - community
  imusic-server:
    container_name: imusic-server
    image: imusic-server:v1.0
    restart: unless-stopped
    build:
      context: .
      dockerfile: imusic-dockerfile
    ports:
      - "8080:8080"
    volumes:
      - ./imusic/logs:/home/imusic/logs
      - ./imusic/uploadPath:/home/imusic/uploadPath
    environment:
      - spring.profiles.active=prod
      - TZ=Asia/Shanghai
    networks:
      - community
    depends_on:
      - imusic-mysql
      - imusic-redis
      - imusic-minio
    links:
      - imusic-mysql
      - imusic-redis
      - imusic-minio
  imusic-nginx:
    container_name: imusic-nginx
    image: imusic-nginx:v1.0
    build:
      context: .
      dockerfile: nginx-dockerfile
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf/:/etc/nginx/conf.d/
      - ./nginx/logs/:/var/log/nginx/
      - ./nginx/ssl/:/etc/nginx/ssl/
    networks:
      - community
    depends_on:
      - imusic-server
networks:
    community:
      driver: bridge
# 基础镜像
FROM openjdk:8
LABEL authoer="erenjaegerking@qq.com"
 
# 安装时区数据
#RUN apt-get update && apt-get install -y tzdata && \
#    ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
#    dpkg-reconfigure -f noninteractive tzdata
 
# 创建目录
RUN mkdir -p /home/imusic/uploadPath && \
    mkdir -p /home/imusic/logs
 
# 定义一个明确的工作目录,符合Docker最佳实践
WORKDIR /home/imusic
 
# 复制jar文件到路径
COPY ./jar/*.jar /home/imusic/imusic.jar
 
# 启动应用
ENTRYPOINT ["java","-jar","imusic.jar"]
# 基础镜像
FROM minio/minio
LABEL authoer="erenjaegerking@qq.com"
 
# 挂载目录
VOLUME /home/imusic/minio
# 创建目录
RUN mkdir -p /home/imusic/minio
# 指定路径
WORKDIR /home/music/minio
# 基础镜像
FROM mysql:8.4
LABEL authoer="erenjaegerking@qq.com"
 
# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/
# 基础镜像
FROM nginx:latest
LABEL authoer="erenjaegerking@qq.com"
 
COPY ./html/dist/ /usr/share/nginx/html/
 
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
 
RUN chmod -R 777 /usr/share/nginx/html
# 基础镜像
FROM redis
LABEL authoer="erenjaegerking@qq.com"
 
# 挂载目录
VOLUME /home/imusic/redis
# 创建目录
RUN mkdir -p /home/imusic/redis
# 指定路径
WORKDIR /home/music/redis
# 复制conf文件到路径
COPY ./conf/redis.conf /home/imusic/redis/redis.conf