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

東方柏發表於2018-06-04
  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 系統,所以能支援直接安裝各種映象,不需要再去安裝系統環境。另外 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

相關文章