安装Docker

  1. # 安装docker
  2. yum install docker
  3. # 检验安装是否成功
  4. docker --version
  5. # 出现“Docker version 1.13.1, build 64e9980/1.13.1”类似提示时说明安装成功
  6. # 启动
  7. systemctl start docker
  8. # 切换到阿里云镜像源
  9. sudo vim /etc/docker/daemon.json
  10. # 内容如下:
  11. {
  12. "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
  13. }
  14. # 保存退出,重启docker
  15. # 重启
  16. systemctl restart docker

安装Mysql

  1. # 拉取mysql 5.7.27版本
  2. docker pull mysql:5.7.27
  3. # 运行mysql并配置root密码
  4. docker run --name mymysql -e MYSQL_ROOT_PASSWORD=admin -d -p 3306:3306 mysql:5.7.27
  • docker run表示运行
  • —name mymysql 表示起个名字叫mymysql
  • -e MYSQL_ROOT_PASSWORD=admin 表示设置root的密码admin
  • -d 表示以后台服务形式运行redis
  • -p 3306:3306表示把服务器的3306映射到docker的3306端口,这样就可以通过服务器的端口访问docker的端口

    安装Redis

    1. # 拉取redis的最新镜像
    2. docker pull redis
    3. # 运行redis
    4. docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes
  • docker run表示运行

  • —name myredis 表示起个名字叫myredis
  • -p 6379:6379表示把服务器的6379映射到docker的6379端口,这样就可以通过服务器的端口访问docker的端口
  • -d 表示以后台服务形式运行redis
  • redis redis-server —appendonly yes表示开启持久化缓存模式,可以存到硬盘

    上传项目源码到服务器

    使用ftp上传

    构建Docker镜像并启动

    1. mvn clean package docker:build
    第一次构建可能很慢,当出现以下内容时表明构建成功:
    1. ...
    2. Step 1/5 : FROM openjdk:8-jdk-alpine
    3. Trying to pull repository docker.io/library/openjdk ...
    4. Pulling from docker.io/library/openjdk
    5. e7c96db7181b: Pull complete
    6. f910a506b6cb: Pull complete
    7. c2274a1a0e27: Pull complete
    8. Digest: sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3
    9. Status: Downloaded newer image for docker.io/openjdk:8-jdk-alpine
    10. ---> a3562aa0b991
    11. Step 2/5 : VOLUME /tmp
    12. ---> Running in 3d063017e1f7
    13. ---> 64bb3506a383
    14. Removing intermediate container 3d063017e1f7
    15. Step 3/5 : ADD asuka-1.0.0.jar app.jar
    16. ---> 1fde1161991d
    17. Removing intermediate container f433739c47fd
    18. Step 4/5 : ENV spring.profiles.active "prod"
    19. ---> Running in c657901e788f
    20. ---> c1a07c29c162
    21. Removing intermediate container c657901e788f
    22. Step 5/5 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
    23. ---> Running in 9af1d895f575
    24. ---> b1324ccfb978
    25. Removing intermediate container 9af1d895f575
    26. Successfully built b1324ccfb978
    27. [INFO] Built asuka/asuka
    28. [INFO] ------------------------------------------------------------------------
    29. [INFO] BUILD SUCCESS
    30. [INFO] ------------------------------------------------------------------------
    31. [INFO] Total time: 19:56 min
    32. [INFO] Finished at: 2020-07-21T16:42:31+08:00
    33. [INFO] ------------------------------------------------------------------------

使用 docker images 查看构建好的镜像

  1. [root@VM_0_4_centos project]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. asuka/asuka latest b1324ccfb978 10 minutes ago 199 MB
  4. docker.io/openjdk 8-jdk-alpine a3562aa0b991 14 months ago 105 MB

asuka/asuka 就是我们构建好的镜像,下一步就是运行该镜像

  1. # -p 绑定asuka的8088端口(程序端口,后面一个),映射到服务器的8088端口(服务器端口,前面一个)
  2. docker run -p 8088:8088 -t asuka/asuka

启动完成之后使用docker ps查看正在运行的镜像:

  1. [root@VM_0_4_centos project]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 20f0703b4203 asuka/asuka "java -Djava.secur..." About a minute ago Up About a minute 0.0.0.0:8088->8031/tcp jolly_snyder

提示

  1. docker是个好东西,在服务器资源有限时是最好的选择,没有之一
  2. 使用docker compose编排,部署会更简单
  3. docker conpose,在下一章介绍

参考文档: