友情提示:因?yàn)椴渴鸬氖俏易约旱捻?xiàng)目,所以有些工具是我自用的,不需要的可以不用安裝。
環(huán)境與插件
- 操作系統(tǒng):Ubuntu 18.04
- jdk: 1.8
- Docker: 19.03.13
- Redis: 6.0.9
- Mysql: 5.7
- Nginx: 1.10
- wkhtmltopdf
- 前后端分離:
前端:Vue
后端:Spring Boot
Docker
更新apt 包索引
sudo apt-get update
安裝 apt 依賴包,用于通過HTTPS來獲取倉(cāng)庫(kù)
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加 Docker 的官方 GPG 密鑰
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
設(shè)置穩(wěn)定版?zhèn)}庫(kù)
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
更新apt源索引
sudo apt-get update
安裝最新版本的 Docker Engine-Community 和 containerd ,或者轉(zhuǎn)到下一步安裝特定版本:
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 安裝特定版本的 Docker Engine-Community,請(qǐng)?jiān)趥}(cāng)庫(kù)中列出可用版本,然后選擇一種安裝。列出您的倉(cāng)庫(kù)中可用的版本:
apt-cache madison docker-ceimage.png
- 使用第二列中的版本字符串安裝特定版本,例如 5:19.03.12 ~ 3-0~ubuntu-bionic
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
測(cè)試 Docker 是否安裝成功
sudo docker run hello-world
打印出以下信息則安裝成功

查看版本
docker -v

安裝jdk
官網(wǎng)下載.gz包
解壓
sudo mkdir /usr/local/java
sudo tar -zxvf jdk-8u271-linux-x64.tar.gz -C /usr/local/java
環(huán)境變量
sudo vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
立即生效
source /etc/profile
查看安裝
java -version

Docker安裝Redis
查看redis來源
docker search redis

拉取鏡像
docker pull redis:6.0.9
創(chuàng)建映射文件
redis.conf: 官網(wǎng)下載
修改配置文件:
bind 127.0.0.1: #注釋掉這部分,這是限制redis只能本地訪問
daemonize no:#默認(rèn)no,改為yes意為以守護(hù)進(jìn)程方式啟動(dòng),可后臺(tái)運(yùn)行,除非kill進(jìn)程,改為yes會(huì)使配置文件方式啟動(dòng)redis失敗
appendonly yes: #redis持久化
requirepass foobared: #修改密碼
mkdir /alidata/docker/redis
vim /alidata/docker/redis/redis.conf
創(chuàng)建容器
docker run -p 6379:6379 --name redis -v /alidata/docker/redis/redis.conf:/etc/redis/redis.conf -v /alidata/docker/redis/data:/data -d redis:6.0.9 redis-server /etc/redis/redis.conf --appendonly yes
命令解釋說明:
-p 6379:6379: 端口映射:前表示主機(jī)部分,:后表示容器部分。
--name redis: 指定該容器名稱,查看和進(jìn)行操作都比較方便。
-v: 掛載目錄,規(guī)則與端口映射相同。
為什么需要掛載目錄:個(gè)人認(rèn)為docker是個(gè)沙箱隔離級(jí)別的容器,這個(gè)是它的特點(diǎn)及安全機(jī)制,不能隨便訪問外部(主機(jī))資源目錄,所以需要這個(gè)掛載目錄機(jī)制。
-d redis:6.0.9: 表示后臺(tái)啟動(dòng)redis
redis-server /etc/redis/redis.conf: 以配置文件啟動(dòng)redis,加載容器內(nèi)的conf文件,最終找到的是掛載的目錄
/alidata/docker/redis/redis.conf
測(cè)試

Docker安裝Mysql
拉取鏡像
docker pull mysql:5.7
創(chuàng)建映射文件
mkdir /alidata/docker/mysql/data
mkdir /alidata/docker/mysql/logs
vim /alidata/docker/mysql/conf/my.cnf
創(chuàng)建容器
docker run \
-p 3306:3306 \
--name mysql \
-v /alidata/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /alidata/docker/mysql/logs:/logs \
-v /alidata/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
命令解釋說明:
-e MYSQL_ROOT_PASSWORD=root 設(shè)置登錄密碼
進(jìn)入容器
docker exec -it mysql bash
進(jìn)入mysql
mysql -u root -p ##輸入登錄密碼root
遠(yuǎn)程登錄mysql
連接宿主機(jī)的IP ,指定端口為3306
遠(yuǎn)程連接出現(xiàn)的問題
image
- 看MySQL的用戶是不是限制了遠(yuǎn)程登錄,也就是看host是localhost還是%
mysql> SELECT user, host FROM mysql.user;image上圖不正常
mysql> update user set host = '%' where user = 'root'; mysql> flush privileges;
- 查看3306端口是否打開
netstat -talnpimage
如果使用的是ECS,設(shè)置安全配置規(guī)則,允許訪問端口
image.png
測(cè)試

Docker安裝RabbitMQ
拉取鏡像
docker pull rabbitmq:3.7
創(chuàng)建容器并啟動(dòng)
docker run -d --name rabbit -p 15672:15672 -p 5672:5672 -p 61613:61613 rabbitmq:3.7
注:這邊需要用到stomp插件,所以需要將61613端口映射到宿主機(jī)上,看個(gè)人需求
安裝STOMP插件
進(jìn)入容器
docker exec -it rabbit bash
手動(dòng)開啟mq管理插件
rabbitmq-plugins enable rabbitmq_management
手動(dòng)開啟STOMP插件
rabbitmq-plugins enable rabbitmq_stomp

訪問http://ip:15672

安裝wkhtmltopdf
下載
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.xenial_amd64.deb
下載依賴
sudo apt-get install libxfont1 xfonts-encodings xfonts-utils xfonts-base xfonts-75dpi
安裝wkhtmltopdf
sudo dpkg -i wkhtmltox_0.12.6-1.xenial_amd64.deb
wkhtmltopdf工具的路徑在
/usr/local/bin/wkhtmltopdf
測(cè)試
wkhtmltopdf https://www.baidu.com/ test.pdf
中文亂碼
下載simsun.ttc 至/usr/share/fonts(可以在Windows里面找)
Docker安裝Nginx
拉取鏡像
docker pull nginx:1.10
創(chuàng)建映射文件
mkdir /alidata/docker/nginx/logs
mkdir /alidata/docker/nginx/conf
啟動(dòng)容器
docker run --name nginx-test -p 80:80 -d nginx:1.10
訪問

建立映射
查看容器
docker ps

copy配置文件
docker cp 1c1245efec1d:/etc/nginx/nginx.conf /alidata/docker/nginx/conf
創(chuàng)建Nginx容器,并將www,logs,conf目錄映射到本地,啟動(dòng)
docker run -d --name nginx \
-p 8082:80 \
-v /alidata/www/histo/pcp:/usr/share/nginx/html \
-v /alidata/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /alidata/docker/nginx/logs:/var/log/nginx \
nginx:1.10
參數(shù)說明:
--name nginx:容器名稱。
-p 81:80: 端口進(jìn)行映射,將本地 81 端口映射到容器內(nèi)部的 80 端口。
-d nginx:1.10: 設(shè)置容器在在后臺(tái)一直運(yùn)行。
創(chuàng)建頁(yè)面
/alidata/www/histo/pcp/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>docker搭建nginx</title>
</head>
<body>
<h1>Docker部署nginx成功</h1>
</body>
</html>
訪問

Docker部署前端(待更)
編譯
編譯后的文件拷貝至/alidata/www/histo/pcp/
配置niginx
Docker部署后端
獲取項(xiàng)目
git clone 項(xiàng)目地址
構(gòu)建項(xiàng)目
mvn clean
mvn install
編寫Dockerfile文件
# 基礎(chǔ)鏡像使用java
FROM java:8
# 作者
MAINTAINER xxx@qq.com
# 將jar包添加到容器中并更名為pcp.jar
ADD ./target/*.jar pcp.jar
# 容器內(nèi)應(yīng)用將會(huì)使用容器的指定端口
EXPOSE 10999
# 運(yùn)行jar包
ENTRYPOINT java -jar pcp.jar
制作鏡像方式一
將編譯好的項(xiàng)目和Dockerfile上傳服務(wù)器
### 上傳至/alidata/application/pcp/pcp

ls

制作鏡像
docker build -t pcp .
啟動(dòng)容器
docker run -d --name pcp -p 10999:10999 pcp
制作鏡像方式二
阿里云新建docker鏡像上傳的云端地址
這個(gè)自己去阿里云上新建,免費(fèi)的
配置build.sh腳本
docker rmi registry.cn-shanghai.aliyuncs.com/xxx/yyy:${1}
docker build -t registry.cn-shanghai.aliyuncs.com/xxx/yyy:${1} .
docker login --username=xxx --password=xxx registry.cn-shanghai.aliyuncs.com
docker push registry.cn-shanghai.aliyuncs.com/xxx/xxx:${1}
進(jìn)入項(xiàng)目,打開git bash

執(zhí)行build.sh腳本
sh build.sh {{version}}
拉鏡像
docker pull registry.cn-shanghai.aliyuncs.com/xxx/yyy:{{version}}
啟動(dòng)容器
docker run -d --name pcp -p 10999:10999 pcp




