Docker-Compose,如此好用的插件

Docker-Compose,如此好用的插件

------正文内容展示,开始汲取新知识啦------

上回我们说了如何安装Docker,下面给大家介绍一款好用的插件 Docker-Compose:

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。

安装docker-compose插件

curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

如果 github 太慢就换成 daocloud:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

给 docker-compose 文件赋予执行权限

chmod +x /usr/local/bin/docker-compose

查看安装版本判断是否可用

docker-compose --version

编写Dockefile和docker-compose.yml构造镜像

Dokerfile

# 基础镜像
FROM  openjdk:8-jre
# 拷贝jar包到容器中
COPY shiye.jar /usr/local/xxx/
COPY conf /usr/local/xxx/conf/
ENTRYPOINT ["java", "-jar", "/usr/local/xxx/xxx.jar", "--spring.config.location=/usr/local/xxx/conf/","-Duser.timezone=GMT+08"]

docker-compose.yml

version: '3'
services:
  shiye:
    build:
      context: .
      dockerfile: Dockerfile
    image: xxx:1.0.0
    container_name: xxx
    restart: always
    environment:
      TZ: "Asia/Shanghai"  #容器内时间校准
    volumes:
      - /usr/local/xxx/backend/logs:/usr/local/xxx/logs
      - /usr/local/xxx/backend/conf:/usr/local/xxx/conf
    ports:
      - 8182:8182
    tty: true #容器后台运行
    networks: # 加入自定义网络,方便容器间通信
      - docker_backend
    extra_hosts:
      - "host.docker.internal:host-gateway"
networks: # 声明自定义网络,一定要是已经创建的网络
  docker_backend:
    external: true

构造镜像并启动容器

Dockefiledocker-compose.yml文件 需要和jar包放在同一个目录下

docker-compose up -d --build [project_name]

更新容器–修改了代码 或者 docker-compose.yml 或者 Dockerfile

Dockefiledocker-compose.yml文件 需要和jar包放在同一个目录下

docker-compose up --force-recreate --build -d

更新容器–只是修改了配置文件

docker-compose restart

附注:docker 内 自定义网络

创建与移除

# 创建
docker network create [network_name]
# 移除
docker network rm [network_name]

查看 docker 网络下的相关信息

docker network inspect [network_name]

查看 容器 网络信息

docker inspect --format='{{json .NetworkSettings.Networks}}' [container_name]

附注:若容器内时间与宿主机时间不一致

方法一(推荐):见上面 docker-compose.yml 下 environment 的属性设置

方法二:复制宿主机时间到容器内


docker cp /etc/localtime [container_name]:/etc/localtime #容易报错
docker cp /usr/share/zoneinfo/Asia/Shanghai [container_name]:/etc/localtime
温馨提示:本文最后更新于2023-12-01 15:37:26,某些文章具有时效性,若有错误或已失效,请在下方留言或QQ联系站长
------正文内容展示,开始汲取新知识啦------

感谢您的访问,Ctrl+D收藏本站吧。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容