杭州网站建设企业,靖江网站制作多少钱,网站建设沙漠风,关键词完整版一、概念 Docker-Compose就是容器编排#xff0c;负责实现对Docker容器集群的快速编排 Compose允许用户通过一个单独的docker-compose.yml模板文件#xff08;YAML 格式#xff09;来定义一组相关联的应用容器为一个项目#xff08;project#xff09;。 可以很容易地用一…一、概念 Docker-Compose就是容器编排负责实现对Docker容器集群的快速编排 Compose允许用户通过一个单独的docker-compose.yml模板文件YAML 格式来定义一组相关联的应用容器为一个项目project。 可以很容易地用一个配置文件定义一个多容器的应用然后使用一条指令安装这个应用的所有依赖完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。 例如 要实部署一个Web微服务项目除了Web服务自身还需要再加上后端的数据库mysql服务容器、redis服务器、注册中心eureka/ nacos 、redis 二、安装
官网Docker Compose 概述 |Docker 文档 可以参考官网安装步骤 用浏览器翻一下 安装 Compose 独立版 |Docker 文档 1-指定docker的路径为 home
DOCKER_CONFIG${DOCKER_CONFIG:-$HOME/.docker} 2- 以上面环境变量 DOCKER_CONFIG 在其下面创建文件夹
mkdir -p $DOCKER_CONFIG/cli-plugins 3-安装compose
curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose4-设置权限
chmod x $DOCKER_CONFIG/cli-plugins/docker-compose验证
1-查看版本号
[rootsyf /]# docker -compose --version
Docker version 24.0.7, build afdd53b卸载命令 rm /usr/local/bin/docker-compose 三、常用命令整理 docker compose up启动容器。可以通过添加 -d 参数在后台运行。 docker compose stop停止容器。 docker compose restart重启容器。 docker compose start启动已经停止的容器。 docker compose down停止并删除容器、网络、镜像等。 docker compose ps查看正在运行的容器。 docker compose logs查看容器的日志。可以添加 -f 参数跟踪日志或使用 --tail 参数查看最后几条日志。 docker compose rm删除容器。可以通过添加 -f 或 --force 参数强制删除。 docker compose run运行容器并可以指定服务的命令、环境变量等。 docker compose scale设置容器的数量。 docker compose pull拉取镜像。 docker compose push推送镜像。 docker compose exec在运行的容器中执行命令。 docker compose config验证配置文件。 docker compose env显示环境变量。 更多命令可以通过 docker-compose --help 查看帮助文档。 四、compse编排案例 1- 使用的资源 可以到我的资源中下载 2- 首先运行我们资源中的springboot的jar包docker 运行jar过程如下文章 Docker Dockerfile运行jar -day 05-CSDN博客https://blog.csdn.net/javaxueba/article/details/134974104 以下是Dockerfile方式运行容器
1-上传jar到如下目录
[rootsyf mydocker]# ls
docker_boot-0.0.1-SNAPSHOT.jar Dockerfile2-在本目录下构建镜像
[rootsyf mydocker]# docker build -t dockertest:1.0 .
[] Building 17.7s (8/8) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 471B 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load metadata for docker.io/library/java:8 15.2s [internal] load build context 0.4s transferring context: 58.23MB 0.4s CACHED [1/3] FROM docker.io/library/java:8sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d 0.0s [2/3] ADD docker_boot-0.0.1-SNAPSHOT.jar dockertest.jar 1.1s [3/3] RUN bash -c touch /dockertest.jar 0.3s exporting to image 0.6s exporting layers 0.6s writing image sha256:ae9b75acc22422d1b2dd2b14070c6dd79f03e3caa145f70813532a888d8fd4c8 0.0s naming to docker.io/library/dockertest:1.0 3-在8089端口运行镜像
[rootsyf mydocker]# docker run -d --namedockertest -p 6001:6001 ae9b75acc224
c06bd1088b383466beec95e1d0af76c9794d1fe1981a7ca4308cec281fec019a4-查看容器 dockertest
[rootsyf mydocker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c06bd1088b38 ae9b75acc224 java -jar /dockerte… 4 seconds ago Up 3 seconds 0.0.0.0:6001-6001/tcp, :::8090-8090/tcp dockertest
a34aff536643 redis:6.2.6 docker-entrypoint.s… 2 weeks ago Up 23 minutes 0.0.0.0:6379-6379/tcp, :::6379-6379/tcp redis6.2.6
2a384f369e0b mysql:5.7 5-查看日志 查看倒数25行
[rootsyf mydocker]# docker logs dockertest|tail -n 25
java.sql.SQLException: Access denied for user root192.168.1 (using password: YES)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.init(ConnectionImpl.java:778) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.JDBC4Connection.init(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at sun.reflect.GeneratedConstructorAccessor57.newInstance(Unknown Source) ~[na:na]at [rootsyf mydocker]# 重点如下使用docker compose来对比上面方式
五、使用compose编排重点
5.1首先,写配置文件 docker-compose.yml vim docker-compose.yml #compose版本
version: 3 #微服务项目
services:microService:
#微服务镜像 image: dockercompose:2.0container_name: dockertestComposeports:- 6001:6001
#数据卷volumes:- /app/data:/datanetworks: - syf_netdepends_on: - redis- mysql#redis服务redis:image: redis:6.2.6ports:- 63791:63791volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/datanetworks: - syf_netcommand: redis-server /etc/redis/redis.conf#mysql服务mysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: rootMYSQL_ALLOW_EMPTY_PASSWORD: noMYSQL_DATABASE: db2023MYSQL_USER: user1MYSQL_PASSWORD: 1234ports:- 33061:33061volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.dnetworks:- syf_netcommand: --default-authentication-pluginmysql_native_password #解决外部无法访问#创建自定义网络 docker network create syf_net
networks: syf_net: 项目配置jar包在我的资源里面直接下载就行 注意 spring.datasource.urljdbc:mysql://mysql:33061/boot_docker 使用 mysql 服务名称访问 spring.redis.hostredis reids也是使用 redis 服务名来访问避免ip变动问题 server.port6001
# alibaba.druid????
spring.datasource.typecom.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-namecom.mysql.jdbc.Driver
spring.datasource.urljdbc:mysql://mysql:33061/boot_docker?useUnicodetruecharacterEncodingutf-8useSSLfalse
spring.datasource.usernameroot
spring.datasource.passwordroot
spring.datasource.druid.test-while-idlefalse
# redis????
spring.redis.database0
spring.redis.hostredis
spring.redis.port63791
spring.redis.password
spring.redis.lettuce.pool.max-active8
spring.redis.lettuce.pool.max-wait-1ms
spring.redis.lettuce.pool.max-idle8
spring.redis.lettuce.pool.min-idle0
# mybatis????
mybatis.mapper-locationsclasspath:mapper/*.xml
mybatis.type-aliases-packagecom.wang.docker.entities
# swagger
spring.swagger2.enabledtrue5.2 检查docker-compsoe.yml文件是否有语法问题
docker compose config -q
[rootsyf mydocker]# ls
docker_boot-0.0.1-SNAPSHOT.jar docker-compose.yml Dockerfile no1-docker_boot-0.0.1-SNAPSHOT.jar
[rootsyf mydocker]# docker compose config -q5.3 启动docker-compose服务并后台运行
docker compose up -d
运行如下
2-运行命令
[rootsyf mydocker]# docker compose up -d
[] Running 4/4⠿ Network mydocker_syf_net Created 0.2s⠿ Container mydocker-redis-1 Started 0.6s⠿ Container mydocker-mysql-1 Started 0.5s⠿ Container dockertestCompose Started2-查看命令
[rootsyf mydocker]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
dockertestCompose java -jar /dockerte… microService running 0.0.0.0:6001-6001/tcp, :::6001-6001/tcp, 8090/tcp
mydocker-mysql-1 docker-entrypoint.s… mysql running 3306/tcp, 33060/tcp, 0.0.0.0:33061-33061/tcp, :::33061-33061/tcp
mydocker-redis-1 docker-entrypoint.s… redis running 6379/tcp, 0.0.0.0:63791-63791/tcp, :::63791-63791/tcp访问swagger : 192.168.1.1:6001/swagger-ui.html