四个路径
- 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