本文目录
- 第一步:安装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
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的地址就可以了
PS:细心的小伙伴会注意到小名的这个测试程序比普通项目除了上一篇文章用到的Dockerfile
又多了一个docker-compose.yml
文件
那么小名来解释一下这个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包
,如下图
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
第三步:我们通过物理机的浏览器访问一下容器里面的项目吧~😁
地址栏是虚拟机的ip;
底下显示的是虚拟机的真实ip以及访问次数(你可以通过/getIP
接口查看你当前的真实的容器ip)
大功告成!🎊🎊🎊