跟我一步一步用Docker搭建Beimi遊戲服務端開發環境
跟我一步一步用Docker搭建Beimi遊戲服務端開發環境
Stone
本文為java 0基礎的小夥伴介紹如何用Docker搭建開發環境。如果不關心過程直接可 跳到本文最後取程式碼。
關鍵步驟為:
構建Beimi服務端依賴的開發環境
獲取 原始碼
編譯
執行和與前端除錯
Beimi (貝密) 是一款開源的棋牌軟體,它的技術線路是:前端cocos creator,後端 java, spirng boot,資料庫採用的mysql。本文針對於對java不太瞭解的小夥伴而寫。
本文涉及到的技術要點要:
Docker
mysql 資料庫匯入
從下載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等。
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
打包分以下幾操作,具體的含義請查閱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
相關文章
- 用 Docker 搭建 Laravel 開發環境DockerLaravel開發環境
- (原創)【B4A】一步一步入門01:簡介、開發環境搭建、HelloWorld開發環境
- docker搭建laravel開發環境lnmpDockerLaravel開發環境LNMP
- 使用 Docker 搭建本地開發環境!Docker開發環境
- 使用 PhpStorm + Docker 搭建開發環境PHPORMDocker開發環境
- 訂閱號服務開發01-搭建開發環境開發環境
- 五分鐘用 Docker 快速搭建 Go 開發環境DockerGo開發環境
- CentOS 7搭建hadoop環境【成功!一步到位】CentOSHadoop
- 一步一步搭建react應用-前後端初始化React後端
- Docker環境如何配置?使用阿里雲OOS一步搞定!Docker阿里
- 快速搭建本地docker的開發環境Docker開發環境
- APP自動化第一步:Appium環境搭建APP
- 一步一步搭建oracle 11gR2 rac+dg之環境準備(二)Oracle
- 從零開始搭建本地 Docker 開發環境Docker開發環境
- CAS SSO單點登入服務端環境搭建服務端
- nuxt.js實現服務端渲染ssr (一)(環境配置、 多環境開發、程式守護、服務端映象)UXJS服務端
- GoLand遠端Linux開發環境搭建GoLandLinux開發環境
- 從零開始搭建Springboot開發環境(Java8+Git+Maven+MySQL+Idea)之一步到位Spring Boot開發環境JavaGitMavenMySqlIdea
- 用 Docker 構建 PHP 開發環境DockerPHP開發環境
- go語言遊戲服務端開發(三)——服務機制Go遊戲服務端
- 如何在 docker for win 上搭建 Laravel 開發環境DockerLaravel開發環境
- Mac 後端入門開發環境搭建Mac後端開發環境
- 雲託管已支援一鍵搭建服務商開發環境開發環境
- 跟我一步一步實現 Flutter 視訊播放外掛 (一)Flutter
- 用 Docker 製作的 Laravel 開發環境DockerLaravel開發環境
- 用docker安裝laravel的開發環境DockerLaravel開發環境
- docker 搭建 lnmp 環境DockerLNMP
- docker搭建php環境DockerPHP
- Docker 搭建laravel環境DockerLaravel
- docker搭建lnmp環境DockerLNMP
- docker搭建前端環境Docker前端
- docker本地環境搭建Docker
- 如何使用docker搭建一個全家桶開發環境Docker開發環境
- 基於Docker搭建PHP+Nginx+MySQL開發環境DockerPHPNginxMySql開發環境
- Newbe.Claptrap 框架入門,第一步 —— 開發環境準備APT框架開發環境
- Flutter開發入門之開發環境搭建(VSCode搭建Flutter開發環境)Flutter開發環境VSCode
- 一步一步完成Flutter應用開發-掘金App首頁FlutterAPP
- Java版分散式微服務雲開發架構之CAS SSO單點登入服務端環境搭建Java分散式微服務架構服務端
- 一步一步搭建腳手架