springboot使用Docker所需环境配置

docker-compose,centos,maven,java

Posted by elmagnifico on September 4, 2019

Forward

写完的springboot web 应用要结合docker部署到ECS上,然后ECS的环境大概看了一下,免费的里面大部分和我的应用需要的环境不太搭,于是自己从零开始配置环境。

环境

  • 操作系统: CentOS 7.6 64位

  • ECS:阿里云

  • 配置:4c 8g 5M(其实用不上这么高的环境,实际上估计1c 2g 2M应该就够用了,也就是个学生配置)

  • 终端:Xshell 6 开启log,每次连接时自动记录所有终端的操作,用来回顾之前遇到过的问题

docker

安装

一般来说docker需要3.8以上内核才能支持,现在一般都不会选非常古老的内核基本都没啥大问题,不再解释了。

yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
或者 一步到位
yum install docker -y

验证

docker -v

Docker version 1.13.1, build 7f2769b/1.13.1

启动

service docker start

开机启动

systemctl enable docker

mysql

需要mysql环境,由于用的是最新的mysql,所以不需要指定什么老版本,直接拉最新的就行了

docker pull mysql

检测mysql时区,需要进入到mysql

# 进入容器
docker exec -it 容器id bash
# 进入mysql
mysql -uroot -p
# 输入密码
# 显示mysql时区
show variables like '%time_zone%';
# 退出mysql
quit
# 退出容器
exit

其他可能的操作

查看控制台的log

docker logs 容器id

查看容器的所有属性,配置

docker inspect 容器id 

git

安装git 非常简单

yum install git -y
git version
git version 1.8.3.1

但是这样的git是没有自动补全的,用起来就是有点别扭

要补全比较麻烦,需要git源码

git clone https://github.com/git/git
cp contrib/completion/git-completion.bash /etc/bash_completion.d/
. /etc/bash_completion.d/git-completion.bash

然后要加入补全

#编辑 /etc/profile 和 ~/.bashrc 文件,加入下面的代码。
# Git bash autoload
if [ -f /etc/bash_completion.d/git-completion.bash ]; then
. /etc/bash_completion.d/git-completion.bash
fi

免密码

第一次输入以后还需要输入密码,后续就不需要了

git config --global credential.helper store

java

java其实可以不安装,但是为了确保在docker出问题的情况下还能用mvn等相关来启动或者编译,所以这里安装了java

cd /usr/local
mkdir java
cd java

这里需要wget一下 java的压缩文件,但是这个压缩文件必须要从网上下,而且获取下载连接还必须登录oracle,非常麻烦,但是由不得不这样

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

wget以后继续下面的安装

wget 安装包路径
tar -xzvf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171 jdk1.8

设置路径

vim /etc/profile

JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

配置生效

source /etc/profile

验证

java -version

java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

maven

maven 主要是拿来检测是否在服务器上的版本可以正常运行编译通过的,其实也能不要。

同理,maven也需要单独去官网下载

https://maven.apache.org/download.cgi

cd /usr/local
mkdir maven
cd maven
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
tar -zxvf apache-maven-3.6.1-bin.tar.gz

修改环境变量

vim /etc/profile

export PATH="/usr/local/maven/apache-maven-3.6.1/bin:$PATH"

配置生效

source /etc/profile

检测

mvn -v 

Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: /usr/local/maven/apache-maven-3.6.1
Java version: 1.8.0_221, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_221/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.27.2.el7.x86_64", arch: "amd64", family: "unix"

docker-compose

docker-compose的安装

https://docs.docker.com/compose/install/

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
如果这个地址下不动,那么切换到国内地址
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

或者直接一步到位,看情况吧,不行就手动安装
yum install docker-compose -y

检测

docker-compose version

docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j  20 Nov 2018

rng-tools

用来补充熵池,解决tomcat启动慢,session阻塞的问题

yum install rng-tools -y      #安装rngd熵服务
systemctl start rngd       #启动服务
cp /usr/lib/systemd/system/rngd.service /etc/systemd/system
cd /etc/systemd/system/
vim rngd.service 

ExecStart=/sbin/rngd -f 改为 
ExecStart=/sbin/rngd -f -r /dev/urandom

systemctl daemon-reload   #重新载入服务 
systemctl restart rngd    #重启服务
systemctl enable rngd    #自动启动

总结

目前就记录了这些,一个月后还会重新再建一次镜像,那时还会对照个再来一遍,对细节部分会再补充一次

之后就把这些build的部分写成sh脚本,新环境自动build环境

参考

https://blog.51cto.com/9291927/2310444

https://docs.docker.com/compose/install/

https://github.com/PI-KA-CHU/PIKACHU-JAVA-Notebook/issues/76

https://medium.com/@noethiger.mike/how-to-deploy-a-webapp-with-docker-5149204e35f2

https://medium.com/@bajracharya.kshitij/thanks-for-your-response-mike-n%C3%B6thiger-baf30968163e

https://www.cnblogs.com/moxiaoan/p/9299404.html