docekr系列-06使用docekr-compose

seefly 2020年07月30日 90次浏览

使用docker-compose

 Compose 项目是 Docker 官方的开源项目, 负责实现对 Docker 容器集群的快速编排。

1、创建一个应用

就创建一个最基本的SpringBoot项目,就一个接口 /v1/hello 返回一个 hello字符串。

2、编写Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=$PROFILES $JAVA_OPTS  $APP_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

3、编写docker-compose.yml

version: '3' #版本号必须是一个字符串
services:  
 # 服务名  
    demo4docker: 
    # 如果不使用镜像,那就指定上下文路径去构建    
        build:      
        # 上下文路径      
            context: .     
            # 指定dockerfile脚本      
            dockerfile: Dockerfile      
            # 构建镜像过程中的参数      
            args:        
                JAR_FILE: "demo4docker-1.0.jar"    
                # 若指定了容器名称,则服该服务无法扩展,因为默认是 项目名称_服务名称_序号。         
        container_name: deom4docker_container    
     # 环境变量,相当于docker run -e    
        environment:      
            JAVA_OPTS: "-Xms128m -Xmx256m -Xmn64m -Duser.timezone=GMT+8"      
            PROFILES: dev    
        # 绑定端口,相当于docker run -p    
        ports:    
                - "23211:8888"

4、准备执行环境并启动

1、创建一个文件夹,把Dockerfile,docker-compose.yml和你的jar包放在里面
2、在这个文件夹下执行 docker-compose up
这个文件夹叫什么,你的项目就叫什么

[seefly@centos-10 demo]$ docker-compose up
Building demo4docker
Step 1/5 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/5 : VOLUME /tmp
 ---> Using cache
 ---> 37afe44fef97
Step 3/5 : ARG JAR_FILE
 ---> Using cache
 ---> d17161f7dfd2
Step 4/5 : COPY ${JAR_FILE} app.jar
 ---> 435ced7b9b8f
Step 5/5 : ENTRYPOINT [ "sh", "-c", "java -Dspring.profiles.active=$PROFILES $JAVA_OPTS $APP_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
 ---> Running in 9c2d0f4f40f5
Removing intermediate container 9c2d0f4f40f5
 ---> dabbf54aca75
Successfully built dabbf54aca75
Successfully tagged demo_demo4docker:latest
Creating deom4docker_container ... done
Attaching to deom4docker_container
容器日志....

5、其他基本命令

注意,下面这些命令的执行必须在docker-compose.yml同一个目录下,否则需要用-f指定这个文件在哪。

  • docker-compose build [options] [services...] 构建或重新构建服务。
  • docker-compose config 验证脚本语法是否正确,跟nginx -t差不多
  • docker-compose up [options] [service]
    默认情况下,up指令会停止当前启动的容器,并使用compose文件重新创建容器。
    • --no-deps
      只重新创建指定的服务容器
    • --no-recreate
      如果容器已经存在了,就不重新创建
    • --force-recreate
      强制重新创建,不能与上面的recreate一起使用
    • --no-build
      不自动构建缺失的服务镜像。
  • docker-compose stop demo4docker 停止服务中的所有容器,可以通过start重新启动
  • docker-compose start [services...] 启动已经存在的服务
  • docker-compose rm [SERVICE_NAME] 删除指定服务或所有服务下的容器,使用 -f 强制删除运行状态的。
  • docker-compose restart [options] [SERVICES...] 重启指定或所有的服务。