跟我一步一步用Docker搭建Beimi遊戲服務端開發環境

weixin_34337265發表於2017-12-14

跟我一步一步用Docker搭建Beimi遊戲服務端開發環境

Stone

摘要

本文為java 0基礎的小夥伴介紹如何用Docker搭建開發環境。如果不關心過程直接可 跳到本文最後取程式碼。

關鍵步驟為:

構建Beimi服務端依賴的開發環境

獲取 原始碼

編譯

執行和與前端除錯

簡介

Beimi (貝密) 是一款開源的棋牌軟體,它的技術線路是:前端cocos creator,後端 java, spirng boot,資料庫採用的mysql。本文針對於對java不太瞭解的小夥伴而寫。

本文涉及到的技術要點要:

Docker

mysql 資料庫匯入

構建Beimi服務端依賴的開發環境

容器鏡向指令碼

從下載http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

jdk-8u151-linux-x64.tar.gz

本想放在github中,後發現檔案過大不適合放在程式碼倉庫中。

## file: Dockerfile

## ubuntu-java

FROM ubuntu:16.04

MAINTAINER Stone Jiang

## COPY sources.list /etc/apt/sources.list

RUN apt-get update && apt-get install -y --no-install-recommends \

net-tools \

ssh \

sudo \

locales \

git \

mysql-client \

maven

RUN locale-gen zh_CN.UTF-8

ENV LANG zh_CN.UTF-8

ENV LANGUAGE zh_CN:zh

ENV LC_ALL zh_CN.UTF-8

ADD jdk-8u151-linux-x64.tar.gz /opt/java

ENV JAVA_HOME=/opt/java/jdk1.8.0_151

ENV JRE_HOME=${JAVA_HOME}/jre

ENV CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib:.

ENV PATH=${PATH}:${JAVA_HOME}/bin

VOLUME ["/mnt/workspace"]

構建容器鏡

docker build -t ubuntu-java .

資料庫

Beimi的原始碼在附帶了資料庫指令碼,在後面通過手功的方式匯入。在程式碼倉庫中也保留了一份匯入完成的資料庫,也可以直接使用。

資料庫的Docker 映象我們直接採用官方版本,啟動指令碼時,設定資料庫的root密碼為123456,這以Beimi原始碼保持一致,省得再改配置指令碼。

docker run --name mysql \-e MYSQL_ROOT_PASSWORD=123456 \-d \--restart always \-h mysql \-v`pwd`/data/mysql/:/var/lib/mysql \mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

為了資料庫檔案存在當前路徑的/data/mysql目錄中,為的是容器重啟後還保留資料。

啟動開發環境的容器

docker run -h java --name"java"--rm -it \-v`pwd`/home:/root \-v`pwd`/workspace:/mnt/workspace \--link"mysql:mysql"\-p 8080:8080 \-p 9081:9081 \ubuntu-java bash

在開發環境裡,我習慣把home目錄繫結到容器的 root 目錄上,方便 可以在.bashrc 設定環境變數,以及在.ssh目錄下放ssh key等。

獲取beimi的程式碼

用git 抓到原始碼

git clone https://github.com/stonejiang208/beimi.git

我們把程式碼放在/mnt/workspace/bm目錄中,也是為了便於修改,不受容器重啟的影響 。

程式碼的結構如下:

222840 ./beimi/client

16 ./beimi/data

12664 ./beimi/doc

16 ./beimi/docker

1328 ./beimi/script

54072 ./beimi/src

635384 ./beimi/target

1264672 ./beimi

#檔案目錄描述

/mnt/workspace/bm/beimi./beimi 主目錄

./beimi/data像是日誌寫這裡的

./beimi/doc文件,看看有好處

./beimi/docker似乎官方也想用docker,但沒有做完

./beimi/client客戶端

./beimi/src服務端

./beimi/script資料庫指令碼

./beimi/target服務端打包後生成的檔案放這裡

其中,資料庫的指令碼如下,如果是新部署的mysql資料庫,需要建立資料庫,並匯入它。

程式碼倉庫中有一份已匯入完成的,想省事可以直接用它。

匯入資料庫

為了驗證容器的連通性,所以我們在開發機上安裝了mysql-client,利用開發機上的mysql 客戶端遠端(這裡通過的是容器互聯的方式)連線另一個容器中的mysql。將不同的服務獨立部署在不同的容器中符合Docker 的理念。

資料庫檔案

/mnt/workspace/bm/beimi/script/beimi.sql

在開發機中,輸入 mysql -uroot -p123456 -h mysql

mysql -uroot -p123456 -h mysql

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

然後

create database beimi

source /mnt/workspace/bm/beimi/script/beimi.sql

確認環境,並打包生成war包

打包分以下幾操作,具體的含義請查閱maven。

進入到專案的主目錄,即有pom.xml所在檔案的目錄,分別執行以下指令。

mvn install:install-file -Dfile=src/main/resources/WEB-INF/lib/jave-1.0.2.jar -DgroupId=lt.jave -DartifactId=jave -Dversion=1.0.2 -Dpackaging=jar

mvn install:install-file -Dfile=src/main/resources/WEB-INF/lib/ip2region-1.2.4.jar -DgroupId=org.lionsoul.ip2region -DartifactId=ip2region -Dversion=1.2.4 -Dpackaging=jar

mvn package

會在target目錄中生成 beimi-0.7.0.war。下一步就是部署這個war包,啟動服務。

部署服務,供前端除錯

將生成的war包移到一個單獨的目錄中,用下面的指令碼啟動

java -Xms1240m -Xmx1240m -Xmn450m -XX:PermSize=512M  -XX:MaxPermSize=512m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:NewSize=128m -XX:MaxNewSize=128m -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=1024 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -Djava.awt.headless=true  -XX:+PrintGCDetails -Xloggc:gc.log -XX:+PrintGCTimeStamps -jar beimi-0.7.0.war

倉庫

https://github.com/stonejiang208/docker-beimi

最後附上幾執行時的效果圖

相關文章