代码改变世界

完整教程:Docker Compose

2025-10-23 10:37  tlnshuju  阅读(3)  评论(0)    收藏  举报

从前面2篇博客,通过手动构建镜像,然后部署。一个个部署还是特别麻烦。而且还不能统一的管理。

1.Docker Compose定义

2.Docker run命令和docker compose配置文件对比

从中可以看出,docker run 命令和docker compose的配置文件,存在一一对应的关系。但是书写形式有些差异,都规定端口映射,数据卷,配置文件 环境变量,网络等docker 容器运行需要的相关的参数。

3.Docker Compose部署命令

4.用docker compose部署docker应用

这个部署的容器包含,mysql,nginx ,java ,多个容器构成的项目。

docker-compose文件内容如下

version: "3.8"
services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: Dcdell88
    volumes:
      - "./mysql/conf:/etc/mysql/conf.d"
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - hm-net
  hmall:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: hmall
    ports:
      - "8080:8080"
    networks:
      - hm-net
    depends_on:
      - mysql
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "18080:18080"
      - "18081:18081"
    volumes:
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
      - "./nginx/html:/usr/share/nginx/html"
    depends_on:
      - hmall
    networks:
      - hm-net
networks:
  hm-net:
    name: hmall

dockerfile文件如下

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY hm-service.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

运行结果如下。