微服务+Docker---springboot+nginx+mysql

  1. spring-boot 项目打包到 docker 镜像中运行:

  2. pom文件

        <plugin>
              <groupId>com.spotify</groupId>
              <artifactId>docker-maven-plugin</artifactId>
              <version>0.4.13</version>
              <configuration>
                  <imageName>springio/${project.artifactId}</imageName>
                  <dockerDirectory>src/main/docker</dockerDirectory>
                  <resources>
                      <resource>
                          <targetPath>/</targetPath>
                          <directory>${project.build.directory}</directory>
                          <include>${project.build.finalName}.jar</include>
                      </resource>
                  </resources>
              </configuration>
          </plugin>
    
  3. Dockerfile 基于 jdk8 的 spring-boot 项目运行环境

       FROM frolvlad/alpine-oraclejdk8:slim
       VOLUME /tmp
       ADD com.xxx-0.0.1-SNAPSHOT.jar app.jar
       RUN sh -c 'touch /app.jar'
       ENV JAVA_OPTS=""
       ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
    
  4. 打包命令:mvn clean package -Dmaven.test.skip=true docker:build 或者单独构建,把 jar 包和 dockerfile 放在同一个目录下,运行 docker build -t {springboot/xxx.jar:1.0.0} .,注意后面的点不能少。

  5. ubuntu docker 安装 mysql

    1. docker pull mysql
    2. 启动 mysql 镜像:docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql
    3. mysql 远程登陆:mysql -h {ip} -p 3306 -u root -p {password}
    4. 授权远程访问并修改密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123456';或者GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'abc123456' WITH GRANT OPTION;
  6. ubuntu docker 安装 nginx:

    1. docker pull nginx
    2. 启动 nginx:docker run -d -v /root/Documents/nginx-assets:/usr/share/nginx/assets -v /etc/docker/nginx/conf.d:/etc/nginx/conf.d -p 80:80 --name webserver nginx(-d 守护模式,-v 挂载数据卷,会同步本地文件夹到 docker 容器中,第二个 -v 是同步 nginx 配置文件, --name 为本次容器启动命名, nginx 为镜像名称,镜像启动后为 webserver)
  7. docker 中运行 web 项目有两种方式。

    1. 安装 ubuntu 镜像,在 ubuntu 上安装 java 镜像
    2. 直接安装 java 镜像
      启动 web 项目命令:docker run -d -v /root/Documents/data/xxx/:/data/xxx/ -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/xxx/myblog:v1
      如果没有必要,尽量不用安装系统镜像,减少复杂度。
  8. docker 常用命令:

    1. docker 启动:Docker quickstart Terminal 直接启动(会启动 Oracle VM VirtualBox 然后启动 docker 系统)
    2. 查看所有镜像:docker images
    3. 查看运行中的容器:docker ps [-a]
    4. 停止某个容器:docker stop {container_id}
    5. 删除所有已停止的容器:docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')
    6. 删除某个镜像:docker rmi {image-id}
    7. 查看某个容器启动日志:docker logs {container_id}
    8. 进入运行中的容器: docker exec -it {container_id} bashdocker attach {container_id}
    9. 基于 Dockerfile 构建镜像:docker build -t {springboot/xxx.jar:1.0.0} .
      10.提交镜像:docker commit {container_id} {name}; docker tag {container_id} {repository_path}; docker push {repository_path}:{版本}
    10. 查看容器信息:docker inspect {container_id}
    11. 从容器中拷贝文件到宿主机: docker cp {container_id}:{container_path} {host_path}
    12. 停止运行 docker 的虚拟机:docker-machine stop default

加强理解:docker 本身就是一个精简版的 linux 系统(alpine linux),所以能支持直接安装各种镜像,不需要再去安装系统环境。另外 docker 提供了镜像仓库,很方便。

使用阿里云镜像地址加速:https://cr.console.aliyun.com/?spm=5176.1971733.0.2.9XaQr6#/accelerator
修改 docker 镜像存储位置:https://blog.csdn.net/u011248395/article/details/70994088
docker 命令参考:https://docker.rails365.net/chapters/3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值