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文件内容
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
?