compose部署

发布时间:2024年01月23日


?Compose 概述

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,可以使用?YAML?文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务。

常用命令:
docker-compose up:
使用docker-compose启动docker-compose.yaml中组合定义的所有容器

docker-compose up --build:
如果docker-compose.yaml中的某些镜像有改动,使用此命令重新打包镜像,并运行

docker-compose up -d:
效果与docker-compose up类似,但是由于增加了-d参数,会在后台启动

docker-compose up --build -d:
效果与docker-compose up --build类似,由于增加了-d参数,所有容器都会在后台运行。

docker system prune:
服务都启动成功后,使用此命令行可清除none镜像,如果有改变的镜像,重新打包后,会只更换这一个,这时这个镜像对应的原来old镜像会变更为none。

?编写Dockerfile文件?

vim Dockerfile

FROM openjdk:latest
WORKDIR /project
COPY spring.jar /project
CMD java -jar spring.jar --mysql.addr=m1

构建镜像

docker build -t spring:v1 .

?运行容器(3个)

docker run -itd spring:v1

docker run -itd spring:v1

docker run -itd spring:v1

运行

docker run -itd \
--name t1 \
tomcat:8.5.20

创建目录

mkdir -p tomcat/webapps

cd 进入目录

cd tomcat/webapps

把jar包放到里面

运行代码:?

?

docker run -itd \

-v  /root/soft/mysql/conf/my.cnf:/etc/my.cf \

-v /root/soft/mysql/data:/var/lib/mysql \

-v /root/soft/mysql/script:/script \

--privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 \

--name m1 \

--net my_net \  (指定使用自定义网络)

mysql/mysql-server:5.7

docker run -itd \
--name t1 \
-v /root/soft/tomcat/webapps/:/usr/local/tomcat/webapps \
--privileged=true \
-p 8080:8080 \

--net my_net \
tomcat:8.5.20

修改配置文件 :docker network create --subnet=172.33.0.1/16 my_net

编辑docker-compose.yml文件:

定义docker-compose.yml

先来看下完整的docker-compose.yml文件内容

version: "3"

networks:
  network:
    ipam:
      driver: default
      config:
        - subnet: '177.7.0.0/16'

services:
  server:
    build:
      context: ./Server
      dockerfile: ./Dockerfile
    container_name: ETS-Server
    restart: always
    ports:
      - '8888:8888'
    depends_on:
      - mysql
      - redis
    links:
      - mysql
      - redis
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
    networks:
      network:
        ipv4_address: 177.7.0.12

  mysql:
    image: mysql:8.0.21
    container_name: ETS-Mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #设置utf8字符集
    restart: always
    ports:
      - "3308:3306"  # host物理直接映射端口为13306
    environment:
      MYSQL_DATABASE: 'ETS' # 初始化启动时要创建的数据库的名称
      MYSQL_ROOT_PASSWORD: 'root' # root管理员用户密码
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
    networks:
      network:
        ipv4_address: 177.7.0.13

  redis:
    image: redis:6.0.6
    container_name: ETS-Redis # 容器名
    restart: always
    ports:
      - '16379:6379'
    volumes:
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
    networks:
      network:
        ipv4_address: 177.7.0.14

放进去之后启动

docker-compose up -d

把wait-for-it.sh文件放到目录

给权限: chmod a+x wait-for-it.sh

./wait-for-it.sh www.baidu.com:80 -t 20

再编写一些?Dockerfile文件

FROM tomcat:8.5.20

WORKDIR /usr/local/tomcat/bin

COPY ./wait-for-it.sh /usr/local/tomcat/bin/

RUN chmod 777 ./wait-for-it.sh

构建镜像

docker ?build -t tomcat:v1 .

docker-compose start mysql //启动mysql

docker-compose up tomcat //启动tomcat

?

文章来源:https://blog.csdn.net/T278lk/article/details/135772240
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。