本文目录

  • 第一步:安装Compose
  • 第二步:下载小名的测试程序
  • 第三步:我们通过物理机的浏览器访问一下容器里面的项目吧~😁


第一步:安装Compose

1.下载Docker Compose:

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

docker compose 注释 docker compose name_docker compose 注释

2.授权,将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose
[root@eamon bin]# sudo chmod +x /usr/local/bin/docker-compose
[root@eamon bin]# docker-compose version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

第二步:下载小名的测试程序

1.这里呢,小名用Spring boot + Mybatis-Plus + Redis + Mysql为大家搭建了一个简单的测试环境

跟着小名教程一步步做的小伙伴,只需修改mysql的地址就可以了

docker compose 注释 docker compose name_centos_02

PS:细心的小伙伴会注意到小名的这个测试程序比普通项目除了上一篇文章用到的Dockerfile 又多了一个docker-compose.yml文件

docker compose 注释 docker compose name_docker compose 注释_03

那么小名来解释一下这个docker-compose.yml文件吧

#表示使用第3.8代语法
version: '3.8'
services:
  EamonTest:
    #指定Dockerfile文件位置,并使用这个镜像来启动容器
    build: .
    #镜像名称
    image: eamontest
    environment:
      #这两个 host 对应 SpringBoot 项目的配置文件(application.yml)中两个 host
      spring.datasource.host: mysql01
      spring.redis.host: redis
    #依赖服务。在整个工程启动时,会先按顺序启动依赖服务,再启动EamonTest服务。
    depends_on:
      - redis
    #端口映射(宿主机端口:容器端口)  
    ports:
      - "8080:8080"
  redis:
    #指定镜像来启动容器
    image: "library/redis:alpine"
    #端口映射(宿主机端口:容器端口)
    ports:
      - "6379:6379"
    #配置映射,(配置文件、数据目录、日志目录)
    volumes:
      - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
      - ./data/redis/:/data/
      - ./log/redis/:/var/log/redis/
    #容器启动后通过配置文件来启动 Redis 容器
    command: redis-server /usr/local/etc/redis/redis.conf
    #如果容器启动失败,会一直尝试重连
    restart: always

2.修改好url后,把小名的测试程序打成jar包,如下图

docker compose 注释 docker compose name_docker compose 注释_04

3.上传jar包和Dockerfile到服务器

这里小名使用的Finalshell,直接将本地文件拖拽到服务器上的Demo目录里即可;用XShell的同学请自行处理,此处不做演示:

#进入 /home 目录
[root@eamon /]# cd /home
#创建 Demo 文件夹
[root@eamon home]# mkdir RedisDemo
#进入 Demo 文件夹
[root@eamon home]# cd RedisDemo
#查看上传好的三个文件
[root@eamon RedisDemo]# ls
docker-compose.yml  Dockerfile  redisltest-0.0.1-SNAPSHOT.jar

4.把刚刚上传的文件,通过compose运行项目

不知道小伙伴们有没有印象,刚才小名在docker-compose.yml文件中提到过depends_on:

#依赖服务
    depends_on:
      - redis

redis小名已经在docker-compose.yml文件中配置好了,它会自动安装并运行的。所以咱们的EamonTest的运行流程是:

  • 第一步:启动redis(没有相应的镜像,会根据配置,自行下载)
  • 第二步:启动我们的EamonTest

命令:

方式一:前台启动

docker-compose up

如下,会像在Idea中看到的控制台那样,显示所有的运行时信息。

[root@eamon RedisDemo]# docker-compose up
redisdemo_redis_1 is up-to-date
Creating redisdemo_EamonTest_1 ... done
Attaching to redisdemo_redis_1, redisdemo_EamonTest_1
redis_1      | 1:C 10 Feb 2021 10:01:39.584 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1      | 1:C 10 Feb 2021 10:01:39.584 # Redis version=6.0.10, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1      | 1:C 10 Feb 2021 10:01:39.584 # Configuration loaded
redis_1      | 1:M 10 Feb 2021 10:01:39.586 * Running mode=standalone, port=6379.
redis_1      | 1:M 10 Feb 2021 10:01:39.587 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1      | 1:M 10 Feb 2021 10:01:39.587 # Server initialized
redis_1      | 1:M 10 Feb 2021 10:01:39.587 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1      | 1:M 10 Feb 2021 10:01:39.587 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
redis_1      | 1:M 10 Feb 2021 10:01:39.587 * Ready to accept connections
EamonTest_1  | 10:04:15.556 [main] INFO org.springframework.core.KotlinDetector - Kotlin reflection implementation not found at runtime, related features won't be available.
EamonTest_1  | 
EamonTest_1  |   .   ____          _            __ _ _
EamonTest_1  |  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
EamonTest_1  | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
EamonTest_1  |  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
EamonTest_1  |   '  |____| .__|_| |_|_| |_\__, | / / / /
EamonTest_1  |  =========|_|==============|___/=/_/_/_/
EamonTest_1  |  :: Spring Boot ::        (v2.2.2.RELEASE)
EamonTest_1  | 
EamonTest_1  | 2021-02-10 10:04:16.717  INFO 1 --- [           main] c.e.mysqltest.MysqltestApplication       : Starting MysqltestApplication v0.0.1-SNAPSHOT on 308414c58465 with PID 1 (/eamon.jar started by root in /)
EamonTest_1  | 2021-02-10 10:04:16.718  INFO 1 --- [           main] c.e.mysqltest.MysqltestApplication       : No active profile set, falling back to default profiles: default
EamonTest_1  | 2021-02-10 10:04:16.933  WARN 1 --- [kground-preinit] o.s.h.c.j.Jackson2ObjectMapperBuilder    : For Jackson Kotlin classes support please add "com.fasterxml.jackson.module:jackson-module-kotlin" to the classpath
EamonTest_1  | 2021-02-10 10:04:17.901  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
EamonTest_1  | 2021-02-10 10:04:17.903  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
EamonTest_1  | 2021-02-10 10:04:17.932  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 14ms. Found 0 Redis repository interfaces.
EamonTest_1  | 2021-02-10 10:04:18.486  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
EamonTest_1  | 2021-02-10 10:04:19.063  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
EamonTest_1  | 2021-02-10 10:04:19.085  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
EamonTest_1  | 2021-02-10 10:04:19.085  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
EamonTest_1  | 2021-02-10 10:04:19.194  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
EamonTest_1  | 2021-02-10 10:04:19.194  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2334 ms
EamonTest_1  |  _ _   |_  _ _|_. ___ _ |    _ 
EamonTest_1  | | | |\/|_)(_| | |_\  |_)||_|_\ 
EamonTest_1  |      /               |         
EamonTest_1  |                         3.3.2 
EamonTest_1  | 2021-02-10 10:04:20.687  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
EamonTest_1  | 2021-02-10 10:04:21.085  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
EamonTest_1  | 2021-02-10 10:04:21.092  INFO 1 --- [           main] c.e.mysqltest.MysqltestApplication       : Started MysqltestApplication in 5.433 seconds (JVM running for 7.255)
EamonTest_1  | 2021-02-10 10:04:34.088  INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
EamonTest_1  | 2021-02-10 10:04:34.088  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
EamonTest_1  | 2021-02-10 10:04:34.095  INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 7 ms
EamonTest_1  | 2021-02-10 10:04:34.338  INFO 1 --- [nio-8080-exec-1] io.lettuce.core.EpollProvider            : Starting without optional epoll library
EamonTest_1  | 2021-02-10 10:04:34.340  INFO 1 --- [nio-8080-exec-1] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library

方式二:后台启动

docker-compose up -d

如下,EamonTest会在后台静默启动,不影响功能。

[root@eamon RedisDemo]# docker-compose up -d
Starting redisdemo_redis_1 ... done
Starting redisdemo_EamonTest_1 ... done

第三步:我们通过物理机的浏览器访问一下容器里面的项目吧~😁

docker compose 注释 docker compose name_centos_05

地址栏是虚拟机的ip;

底下显示的是虚拟机的真实ip以及访问次数(你可以通过/getIP接口查看你当前的真实的容器ip)

大功告成!🎊🎊🎊