国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

容器化開發(fā)環(huán)境 - 數(shù)據(jù)庫連接和遷移

Jensen / 1905人閱讀

摘要:在容器化開發(fā)環(huán)境中分享了如何容器化本地的開發(fā)環(huán)境。對于一個應(yīng)用,數(shù)據(jù)庫似乎是必不可少的東西。下面會通過例子來介紹一下如何一個容器中的數(shù)據(jù)庫。例子將會使用的技術(shù)棧在目錄下新建文件,用于控制數(shù)據(jù)庫的啟動。

在 容器化開發(fā)環(huán)境 中分享了如何容器化本地的開發(fā)環(huán)境。對于一個Web應(yīng)用,數(shù)據(jù)庫似乎是必不可少的東西。下面會通過例子來介紹一下如何Setup一個容器中的數(shù)據(jù)庫。例子將會使用的技術(shù)棧:

MySQL

Flyway

...

Setup Codebase

clone hello-dockerize repo

$ git clone https://github.com/aikin/hello-dockerize.git

Install MySQL On Docker Image

dockerize目錄下新建文件docker-entrypoint.sh,用于控制MySQL數(shù)據(jù)庫的啟動。

修改Dockerfile,添加安裝MySQL的配置:

# === Install Mysql ===
RUN groupadd -r mysql && useradd -r -g mysql mysql

RUN mkdir /docker-entrypoint-initdb.d

ENV MYSQL_MAJOR 5.7
ENV MYSQL_VERSION 5.7.11-1ubuntu14.04

# gpg: key 5072E1F5: public key "MySQL Release Engineering " imported
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5

RUN echo "deb http://repo.mysql.com/apt/ubuntu/ trusty mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list

# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn"t have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)
# also, we set debconf keys to make APT a little quieter
RUN { 
echo mysql-community-server mysql-community-server/data-dir select ""; 
echo mysql-community-server mysql-community-server/root-pass password ""; 
echo mysql-community-server mysql-community-server/re-root-pass password ""; 
echo mysql-community-server mysql-community-server/remove-test-db select false; 
} | debconf-set-selections

RUN apt-get update
RUN apt-get install -y mysql-server="${MYSQL_VERSION}"
RUN rm -rf /var/lib/apt/lists/*
RUN rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql

# comment out a few problematic configuration values
# don"t reverse lookup hostnames, they are usually another container
RUN sed -Ei "s/^(bind-address|log)/#&/" /etc/mysql/my.cnf 
&& echo "skip-host-cache
skip-name-resolve" | awk "{ print } $1 == "[mysqld]" && c == 0 { c = 1; system("cat") }" /etc/mysql/my.cnf > /tmp/my.cnf 
&& mv /tmp/my.cnf /etc/mysql/my.cnf

VOLUME /var/lib/mysql

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 3306
CMD ["mysqld"]

新建文件dev.env,用于配置數(shù)據(jù)庫賬號和密碼。

MYSQL_USER=mysql
MYSQL_PASSWORD=mysql
MYSQL_DATABASE=hello_dockerize
MYSQL_ROOT_PASSWORD=12345678

修改docker-compose.yml

web:
  build: ./dockerize
  env_file: ./dockerize/dev.env
  environment:
- LANG=C.UTF-8
- TERM=xterm
- DEBUG=true
  ports:
- "8080:8080"
- "3306:3306"
- "5005:5005"
  volumes:
- .:/hello-dockerize
- /var/lib/mysql:/var/lib/mysql

啟動容器

$ docker-compose run --service-ports web

Use Database Migrations Flyway

新建文件db.mysql.gradle

flyway {
    driver = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://dockerhost:3306/hello_dockerize"
    user = "mysql"
    password = "mysql"
    table = "hello_dockerize_schema_version"
    initOnMigrate = true
    locations = ["filesystem:${projectDir}/src/main/resources/db/migration/mysql"]
    sqlMigrationPrefix = "MySQL-"
}

dependencies {
    compile "mysql:mysql-connector-java:5.1.34"
}

修改build.gradle文件,添加

buildscript {
    repositories {
        jcenter()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE")
        classpath "org.flywaydb:flyway-gradle-plugin:3.0"
    }
}
apply plugin: "flyway"
apply from: "db.mysql.gradle"

新建目錄 src/main/resources/db/migration/mysql,添加 migration sql 腳本MySQL-1_1__create_user.sql

CREATE TABLE User (
    ID          BIGINT PRIMARY KEY   AUTO_INCREMENT,
    FIRST_NAME  varchar(64) NOT NULL,
    LAST_NAME   varchar(64) NOT NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

insert into User (FIRST_NAME, LAST_NAME) values ("Laijin", "Lu");

執(zhí)行 migrate 命令:

$ ./gradlew flywayClean flywayInit flywayMigrate

Check Migrate Result On Intellij IDEA

安裝 Intellij IDEA plugin Database Navigator,配置connections

查看User表數(shù)據(jù)

  結(jié)束了嗎?并沒有,如何將應(yīng)用和數(shù)據(jù)庫分離成兩個獨(dú)立的容器。

原文鏈接

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26762.html

相關(guān)文章

  • 服務(wù)遷移之路 | Spring Cloud向Service Mesh轉(zhuǎn)變

    摘要:服務(wù)網(wǎng)關(guān)服務(wù)網(wǎng)關(guān)涵蓋的功能包括路由,鑒權(quán),限流,熔斷,降級等對入站請求的統(tǒng)一攔截處理。具體可以進(jìn)一步劃分為外部網(wǎng)關(guān)面向互聯(lián)網(wǎng)和內(nèi)部網(wǎng)關(guān)面向服務(wù)內(nèi)部管理。應(yīng)用服務(wù)應(yīng)用服務(wù)是企業(yè)業(yè)務(wù)核心。到此實(shí)際上已經(jīng)完成服務(wù)遷移工作。 導(dǎo)讀 Spring Cloud基于Spring Boot開發(fā),提供一套完整的微服務(wù)解決方案,具體包括服務(wù)注冊與發(fā)現(xiàn),配置中心,全鏈路監(jiān)控,API...

    rickchen 評論0 收藏0
  • 拉勾網(wǎng)基于 UK8S平臺的容器改造實(shí)踐

    摘要:宋體本文從拉勾網(wǎng)的業(yè)務(wù)架構(gòu)日志采集監(jiān)控服務(wù)暴露調(diào)用等方面介紹了其基于的容器化改造實(shí)踐。宋體此外,拉勾網(wǎng)還有一套自研的環(huán)境的業(yè)務(wù)發(fā)布系統(tǒng),不過這套發(fā)布系統(tǒng)未適配容器環(huán)境。寫在前面 拉勾網(wǎng)于 2019 年 3 月份開始嘗試將生產(chǎn)環(huán)境的業(yè)務(wù)從 UHost 遷移到 UK8S,截至 2019 年 9 月份,QA 環(huán)境的大部分業(yè)務(wù)模塊已經(jīng)完成容器化改造,生產(chǎn)環(huán)境中,后臺管理服務(wù)已全部遷移到 UK8...

    CoorChice 評論0 收藏0
  • TOP100summit分享實(shí)錄 | JFrog高欣:Kubernetes is hard!JFro

    摘要:本文內(nèi)容節(jié)選自由主辦的第七屆,架構(gòu)師高欣分享的的實(shí)踐實(shí)錄。當(dāng)然,在部署完成后,我們要做一個監(jiān)測以便掌握它的運(yùn)行狀況。規(guī)劃配置運(yùn)行環(huán)境在正式部署前,還要考慮如何規(guī)劃并配置好運(yùn)行環(huán)境。在使用部署時,可以利用這些命令做驗(yàn)證,檢驗(yàn)部署是否正常。 showImg(https://segmentfault.com/img/bVblRHj?w=2880&h=1920); 本文內(nèi)容節(jié)選自由msup主辦...

    鄒強(qiáng) 評論0 收藏0
  • 內(nèi)涵福利 | 加速業(yè)務(wù)交付,從谷歌云上使用 Kubernetes Istio 開始

    摘要:優(yōu)化網(wǎng)絡(luò)在今年早些時候,我們公布了許多關(guān)于的新的網(wǎng)絡(luò)功能,包括原生集群,共享,原生容器負(fù)載均衡以及原生容器的網(wǎng)絡(luò)服務(wù),它們服務(wù)于上的應(yīng)用程序以及在谷歌云上的。 showImg(https://segmentfault.com/img/bVbnY8w);許多企業(yè)機(jī)構(gòu)正在把全部或部分 IT 業(yè)務(wù)遷移到云端,幫助企業(yè)更好的運(yùn)營。不過這樣的大規(guī)模遷移,在企業(yè)的實(shí)際操作中也有一定難度。不少企業(yè)保...

    王巖威 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<