**
**
從0開始,使用dockerfile將項目打包上傳到服務器
以開源項目若依Cloud爲例子
項目地址:https://github.com/zhangmrit/ruoyi-cloud
docker安裝以及遠程訪問配置
1.安裝依賴包:
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.安裝Docker-CE
$ sudo yum install docker-ce
3.配置docker遠程訪問
$ vim /usr/lib/systemd/system/docker.service
4.找到下面這一行:
{% qnimg Git拉取項目-Docker部署SpringCloud/5.png %}
修改爲:
# 如果有不一樣的,直接在 /usr/bin/dockerd 後面加上即可
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
5.重新讀取配置文件
$ systemctl daemon-reload
6.啓動docker服務
# 重啓docker
$ systemctl restart docker
# 開機啓動
$ sudo systemctl enable docker
# 啓動docker
$ sudo systemctl start docker
測試訪問 http://ip-address:2375/version 如果有數據則配置成功
docker-compse安裝
依次執行:
$ 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 chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
clone項目
clone項目到本地或使用IDEA直接拉取:
$ git clone https://github.com/zhangmrit/ruoyi-cloud.git
請閱讀README,其中說明了啓動順序:
- eureka
- config
- gateway
- system
- auth
就以前3個爲例子,後面的依瓢畫葫蘆即可
修改yml
其他模塊請修改Eureka的地址:
server:
port: 7001
eureka:
instance:
hostname: chongma-eureka #eureka服務端的實例名稱
client:
register-with-eureka: false #false表示不向註冊中心註冊自己。
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url:
#單機
#設置與Eureka Server交互的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
pom文件增加plugin
在需要啓動的模塊裏添加
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.14</version>
<configuration>
<!-- 鏡像名稱 -->
<imageName>${project.artifactId}</imageName>
<!-- Dockerfile文件所在目錄 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- docker所在宿主機ip 2375爲docker開啓的遠程訪問端口 -->
<dockerHost>http://ip-address:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
dockerfile
如下圖,新建文件夾docker並創建Dockerfile文件
**
**
文件內容:
# 基於哪個鏡像
FROM java:8
# 將本地文件夾掛載到當前容器
VOLUME /tmp
# 拷貝文件到容器,chongma-eureka-1.0.1-SNAPSHOT.jar這裏是maven打包後的名字
ADD chongma-eureka-1.0.1-SNAPSHOT.jar chongma-eureka.jar
RUN bash -c 'touch /chongma-eureka.jar'
# 配置容器啓動後執行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/chongma-eureka.jar"]
其他的文件照着修改打包名即可
maven打包
首先在IDEA右側欄點開Maven,選中ruoyi-cloud(root),執行install
然後新建maven命令:
clean package docker:build -DskipTests
**
**
依次創建好3個模塊的maven,最後執行
遠程連接服務器,執行
$ docker images
**
**
編寫docker-compose
任意目錄執行:
$ vim docker-compose.yml
其他模塊的照着寫即可:
version: '3'
services:
eureka-server: #自定義服務名--註冊中心
restart: on-failure
image: chongma-eureka #鏡像名稱
ports:
- "7001:7001" #映射的端口
environment: #環境變量
SERVER_PORT: "7001" #自定義參數用於給服務的配置文件傳遞參數
config: #自定義服務名--配置中心
image: chongma-config #鏡像名稱
ports:
- "8888:8888" #映射的端口
environment: #環境變量配置
REGISTER_URL: "http://ip-address:7001/eureka/"
SERVER_PORT: "8888"
gateway: #自定義服務名
image: chongma-gateway #鏡像名稱
ports:
- "9527:9527" #映射的端口
environment: #環境變量配置
REGISTER_URL: "http://ip-address:7001/eureka/"
SERVER_PORT: "9527"
保存,執行命令:
$ docker-compose -f docker-compose.yml up -d
其他命令:
停止docker-compose(停止項目):
$ docker-compose -f docker-compose.yml down
查看運行的容器日誌:
$ docker logs -f -t --tail 行數 容器名
遺留問題(待解決)
1.服務器已有的項目鏡像,再次執行maven打包,會出現如下問題:
**
**
2.config配置中心用的是search-locations,雖然config註冊到了Eureka
但是裏面的數據庫、redis連接都沒有讀取到