dockerfile,docker-compose的使用

本文介绍了如何使用Dockerfile和docker-compose进行容器化部署。从代码编译成jar包,到利用Dockerfile打包成镜像,再到通过docker-compose启动容器,详细解析了每个步骤。此外,还提到了在gitlab.ci中构建镜像的流程,以及在不同环境中导入和启动镜像的方法。在实践中,可能会遇到如文件路径不通等问题,需要通过挂载卷和设置环境变量来解决。
摘要由CSDN通过智能技术生成

dockerfile,docker-compose的使用

工作需求

之前的项目是集成了tpp,项目是用GitLab CI持续集成,现在的需求是开发在代码路径下用dockerfile打包镜像包,把dockerfile、镜像tar包、docker-compose文件给用户后,用户能够凭借docker-compose命令将容器启动起来。

docker-compose构建流程

docker-compose -f docker/docker-compose.yml up 或者
docker-compose up -d custom_server_name

  • docker-compose.yml文件中的image指定了创建的镜像名称和tag,volumes指定了容器内部路径与外部路径的挂载目录,build指定了创建镜像时的上下文和dockerfile所在路径,没有build参数默认dockerfile和docker-compose在同一目录下,context为 ‘.’ 表示上下文就是当前docker-compose运行目录,context为‘…’指定上一级目录为上下文,dockerfile指定在context指示路径下的相对路径下的dockerfile。

  • docker-compose up命令首先会根据dockerfile创建镜像,创建成功后的镜像可通过docker images查看,名称就是docker-compose.yml中规定的image参数,并启动该镜像创建docker容器,容器名为services制定的服务名,例如此处为custom_server_name,通过docker exec -it custom_server_name bash命令可进入该容器,通过docker logs -f custom_server_name 可查看该容器启动日志。

version: '3'
services:
  custom_server_name:
    image: custom_image_name:custom_tag
#    build:
#      context: ..
#      dockerfile: docker/Dockerfile
    ports:
      - "25031:25031"
    volumes:
      - /opt/custom_server_name/conf:/opt/conf
    network_mode: host
    container_name: custom_server_name
    env_file:
      - /opt/common.env
    restart: always
    environment:
      - SERVICE_NAME=custom_server_name
    deploy:
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
<
docker-compose 是一个用于定义和运行多个容器的工具,而 Dockerfile 是用于构建 Docker 镜像的文件。在使用 docker-compose 运行多个容器时,可以通过 Dockerfile 来定义每个容器所需的镜像。 以下是使用 docker-compose 结合 Dockerfile 的基本步骤: 1. 创建一个新的目录,并在该目录创建一个名为 `docker-compose.yml` 的文件,用于定义容器组成和配置。 2. 在同一目录,为每个容器创建一个文件夹,并在每个文件创建一个 Dockerfile,用于构建该容器的镜像。可以根据需要,在 Dockerfile 指定所需的基础镜像、软件包安装、文件复制等操作。 3. 在 `docker-compose.yml` 文件定义每个容器的配置。使用 `services` 关键字来定义每个服务,并指定该服务使用的镜像和其他配置项。可以参考下面的示例: ```yaml version: "3" services: web: build: ./web # 指定构建 web 服务的 Dockerfile 所在路径 ports: - "8000:8000" # 指定端口映射 volumes: - ./app:/app # 挂载本地目录到容器内部 db: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=mydatabase ``` 在上述示例,定义了两个服务:`web` 和 `db`。`web` 服务使用 `./web` 目录Dockerfile 构建镜像,映射本地端口 8000 到容器内部的 8000 端口,并挂载 `./app` 目录到容器内部。 `db` 服务使用官方的 `mysql:latest` 镜像,并设置了环境变量。 4. 运行 `docker-compose up` 命令来启动容器。docker-compose 会根据 `docker-compose.yml` 文件的配置构建并启动容器组。 使用 docker-compose 结合 Dockerfile 可以更方便地定义和管理多个相关的容器,提高开发和部署的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值