使用Docker容器部署Java Spring伺服器
在這份指南中,我將展示如何使用Docker部署Java Spring伺服器。請按照以下步驟操作:
1.啟動一個Ubuntu Server
對於這份演示,我們假設你已經啟動了一個運行Ubuntu 14.04的伺服器。使用APT資源庫安裝Docker:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
使用你最喜歡的文字編輯器打開/etc/apt/sources.list.d/docker.list
,並添加以下行:
deb [https://apt.dockerproject.org/repo](https://apt.dockerproject.org/repo) ubuntu-trusty main
繼續在伺服器上安裝Docker:
sudo apt-get update
sudo apt-get install docker-engine
sudo service docker start
2.構建Docker映像
登入Docker Hub (https://hub.docker.com/),並創建新的儲存庫。然後,在你的終端機運行:
docker login
被提示時輸入您的用戶名和密碼。
在你的本地開發Java Spring資料夾,創建一個Dockerfile,內容如下:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD target/fleet-beacon*.jar app.jar
EXPOSE 8080
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar"]
要構建映像,執行:
docker build -t username/repo-name .
這裡,-t
代表”tag”。將username
和repo-name
替換成你的Docker Hub用戶名和儲存庫名稱。也不要忘記最後的句點。
將構建的映像推送到您的遠程儲存庫:
docker push username/repo-name
3.拉取Docker映像
在您的遠程Ubuntu伺服器上,登入Docker並拉取映像:
docker pull username/repo-name
在後臺運行容器:
docker run -d -p 8080:8080 username/repo-name
這裡,-d
表示”detached”, -p
指定所有暴露的端口(例如,8080)都應該發布到主機接口。
4.設置Nginx
使用Vim編輯器,打開/etc/nginx/sites-available/default
並將其修改如下:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass [http://localhost:8080/](http://localhost:8080/);
}
}
退出並使用:wq!
保存。
就這樣!打開瀏覽器,導航到你的遠程伺服器的IP地址;你應該能看到Java Spring頁面運行正常。
5.問題排查
如果你遇到Docker守護進程連接的問題,出現:
Cannot connect to the Docker daemon. Is the Docker daemon running on this host?
運行以下命令:
eval $(docker-machine env default)
如果你正在本地測試且找不到你的IP地址,用這個命令找到它:
docker-machine ls
如果你遇到任何其他問題,請隨時在下方留言。