成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

容器化開發(fā)環(huán)境 - 應(yīng)用和數(shù)據(jù)庫隔離

cppowboy / 3089人閱讀

摘要:上一篇容器化開發(fā)環(huán)境數(shù)據(jù)庫連接和遷移分享了關(guān)于如何給容器中的應(yīng)用創(chuàng)建數(shù)據(jù)庫連接,接下來將分享一下如何將數(shù)據(jù)庫從應(yīng)用容器中分離出來。

上一篇容器化開發(fā)環(huán)境 - 數(shù)據(jù)庫連接和遷移分享了關(guān)于如何給容器中的應(yīng)用創(chuàng)建數(shù)據(jù)庫連接,接下來將分享一下如何將數(shù)據(jù)庫從應(yīng)用容器中分離出來。

為什么要進(jìn)行分離?當(dāng)應(yīng)用和數(shù)據(jù)庫在同一個容器中運(yùn)行時,也就意味著,應(yīng)用和數(shù)據(jù)庫的生命周期捆綁在了一起,應(yīng)用和數(shù)據(jù)庫的運(yùn)行就會出現(xiàn)相互干擾現(xiàn)象,應(yīng)用的異常將有可能導(dǎo)致容器的停止,同時也將導(dǎo)致數(shù)據(jù)庫的關(guān)閉。更主要的原因是,很多時候需要多個容器中的應(yīng)用連接一個數(shù)據(jù)庫,為了保證容器之間的運(yùn)行相互獨(dú)立,相互不影響,就有必要將數(shù)據(jù)庫隔離在獨(dú)立的容器中運(yùn)行,讓數(shù)據(jù)庫和容器獨(dú)處二人世界,同時保證數(shù)據(jù)庫的生命周期不在受其它應(yīng)用影響。

Setup Codebase

clone hello-dockerie repo

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

Separate MySQL Dockerfile

dockerize目錄下創(chuàng)建mysql/Dockerfle

修改mysql/Dockerfile,配置安裝MySQL腳本:

FROM ubuntu:14.04

RUN apt-get update

# === 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 && 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"]

修改dockerize/Dockerfile,移除安裝MySQL的配置:

FROM ubuntu:14.04

RUN apt-get update


ENV VERSION 8
ENV UPDATE 66
ENV BUILD 17

ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-oracle
ENV JRE_HOME ${JAVA_HOME}/jre


RUN apt-get install ca-certificates curl 
gcc libc6-dev libssl-dev make 
-y --no-install-recommends

RUN    curl --silent --location --retry 3 --cacert /etc/ssl/certs/GeoTrust_Global_CA.pem 
    --header "Cookie: oraclelicense=accept-securebackup-cookie;" 
    http://download.oracle.com/otn-pub/java/jdk/"${VERSION}"u"${UPDATE}"-b"${BUILD}"/server-jre-"${VERSION}"u"${UPDATE}"-linux-x64.tar.gz 
    | tar xz -C /tmp

RUN    mkdir -p /usr/lib/jvm && mv /tmp/jdk1.${VERSION}.0_${UPDATE} "${JAVA_HOME}"

RUN apt-get install -y openssl

RUN apt-get remove --purge --auto-remove -y 
gcc 
libc6-dev 
libssl-dev 
make

RUN    apt-get autoclean && apt-get --purge -y autoremove

RUN    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN update-alternatives --install "/usr/bin/java" "java" "${JRE_HOME}/bin/java" 1 && 
    update-alternatives --install "/usr/bin/javac" "javac" "${JAVA_HOME}/bin/javac" 1 && 
    update-alternatives --set java "${JRE_HOME}/bin/java" && 
    update-alternatives --set javac "${JAVA_HOME}/bin/javac"

WORKDIR /hello-dockerize

EXPOSE 8080
EXPOSE 5005
CMD ["bash"]

dockerize/docker-entrypoint.sh移動到dockerize/mysql目錄下

Startup

修改docker-compose.yml:

web:
  build: ./dockerize
  environment:
- LANG=C.UTF-8
- TERM=xterm
- DEBUG=true
  links:
  - mysql:mysql
  ports:
- "8080:8080"
- "5005:5005"
  volumes:
- .:/hello-dockerize

mysql:
  build: ./dockerize/mysql
  env_file: ./dockerize/dev.env
  ports:
- "3306:3306"
  volumes:
- /var/lib/mysql:/var/lib/mysql

啟動容器:

$ docker-compose up

查看容器

$ docker-compse ps

######
Name                       Command             State                       Ports
---------------------------------------------------------------------------------------------------------------
hellodockerize_mysql_1     docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp
hellodockerize_web_run_1   bash                          Up      0.0.0.0:5005->5005/tcp, 0.0.0.0:8080->8080/tcp
######

執(zhí)行 migrate 命令:

root@6485a7a48988:/hello-dockerize# ./gradlew flywayClean flywayInit flywayMigrate

Check Migrate Result On Intellij IDEA

查看 User 表

原文鏈接

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26760.html

相關(guān)文章

  • 容器-Docker介紹

    摘要:容器作為一類操作系統(tǒng)層面的虛擬化技術(shù),其目標(biāo)是在單一主機(jī)交付多套隔離性環(huán)境,容器共享同一套主機(jī)操作系統(tǒng)內(nèi)核。與其它容器平臺不同,引入了一整套與容器管理相關(guān)的生態(tài)系統(tǒng)。每個容器都是相互隔離的保證安全的平臺。 導(dǎo)讀:本文章對Docker技術(shù)進(jìn)行了介紹,闡述了Docker的技術(shù)發(fā)展歷程、容器與虛擬機(jī)的差異、Docker原理、特點、Docker三組件和Docker帶來的影響,為我們進(jìn)一步理解D...

    李增田 評論0 收藏0
  • 有贊容器實踐

    摘要:有贊容器化方案我們的容器化方案基于和,下面介紹一下我們在各個方面遇到的問題以及解決方案。不過對于上線來說,需要整個運(yùn)維體系來適配容器化,比如監(jiān)控發(fā)布日志等等。 前言 容器化已經(jīng)成為一種趨勢,它可以解決很多運(yùn)維中的痛點,比如效率、成本、穩(wěn)定性等問題,而接入容器的過程中往往也會碰到很多問題和不便。在有贊最開始做容器化是為了快速交付開發(fā)測試環(huán)境,在容器化的過程中,我們碰到過容器技術(shù)、運(yùn)維體系...

    songze 評論0 收藏0
  • 有贊容器實踐

    摘要:有贊容器化方案我們的容器化方案基于和,下面介紹一下我們在各個方面遇到的問題以及解決方案。不過對于上線來說,需要整個運(yùn)維體系來適配容器化,比如監(jiān)控發(fā)布日志等等。 前言 容器化已經(jīng)成為一種趨勢,它可以解決很多運(yùn)維中的痛點,比如效率、成本、穩(wěn)定性等問題,而接入容器的過程中往往也會碰到很多問題和不便。在有贊最開始做容器化是為了快速交付開發(fā)測試環(huán)境,在容器化的過程中,我們碰到過容器技術(shù)、運(yùn)維體系...

    EscapedDog 評論0 收藏0
  • 阿里如何實現(xiàn)100%容器鏡像?八年技術(shù)演進(jìn)之路回顧

    摘要:八年時間,阿里集團(tuán)實現(xiàn)了內(nèi)部容器化鏡像化,經(jīng)歷了幾代演進(jìn)。容器技術(shù)在阿里的演進(jìn)過程伴隨著阿里技術(shù)架構(gòu)本身的演進(jìn)。 八年時間,阿里集團(tuán)實現(xiàn)了 100%內(nèi)部容器化鏡像化,經(jīng)歷了幾代演進(jìn)。本文將從最初的架構(gòu)開始,向大家介紹下阿里內(nèi)部的容器化演化過程。 PouchContainer 現(xiàn)在服務(wù)于阿里巴巴集團(tuán)和螞蟻金服集團(tuán)的絕大部分 BU, 包括交易&中間件,B2B/CBU/ICBU,搜索廣告數(shù)據(jù)...

    tyheist 評論0 收藏0
  • Cube如何助力科盾業(yè)務(wù)容器“一步到位”?

    前言 以Docker為代表的容器技術(shù)縮短了企業(yè)應(yīng)用從開發(fā)、構(gòu)建到發(fā)布、運(yùn)行的整個生命周期。Gartner推測到2022年將會有75%的全球化企業(yè)將在生產(chǎn)中使用容器化的應(yīng)用(當(dāng)前約為30%)。由于Docker往往難以獨(dú)立支撐起大規(guī)模容器化部署,因此誕生了Kubernetes等容器編排工具,解決了大規(guī)模容器的組織和管理難題。 但事實上,Kubernetes的使用體系還是非常復(fù)雜的,對于企業(yè)的開...

    happyhuangjinjin 評論0 收藏0
  • UCloud Cube助力科盾業(yè)務(wù)容器一步到位

    摘要:幫助科盾實現(xiàn)了業(yè)務(wù)的快速回滾和橫向擴(kuò)展。后續(xù),科盾計劃引入集群,并將更多數(shù)據(jù)處理鏈等上的服務(wù)遷移至。前言 以Docker為代表的容器技術(shù)縮短了企業(yè)應(yīng)用從開發(fā)、構(gòu)建到發(fā)布、運(yùn)行的整個生命周期。Gartner推測到2022年將會有75%的全球化企業(yè)將在生產(chǎn)中使用容器化的應(yīng)用(當(dāng)前約為30%)。由于Docker往往難以獨(dú)立支撐起大規(guī)模容器化部署,因此誕生了Kubernetes等容器編排工具,解決...

    songjz 評論0 收藏0

發(fā)表評論

0條評論

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