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

資訊專欄INFORMATION COLUMN

容器化開發環境 - 應用和數據庫隔離

cppowboy / 3081人閱讀

摘要:上一篇容器化開發環境數據庫連接和遷移分享了關于如何給容器中的應用創建數據庫連接,接下來將分享一下如何將數據庫從應用容器中分離出來。

上一篇容器化開發環境 - 數據庫連接和遷移分享了關于如何給容器中的應用創建數據庫連接,接下來將分享一下如何將數據庫從應用容器中分離出來。

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

Setup Codebase

clone hello-dockerie repo

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

Separate MySQL Dockerfile

dockerize目錄下創建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
######

執行 migrate 命令:

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

Check Migrate Result On Intellij IDEA

查看 User 表

原文鏈接

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26760.html

相關文章

  • 容器-Docker介紹

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

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

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

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

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

    EscapedDog 評論0 收藏0
  • 阿里如何實現100%容器鏡像?八年技術演進之路回顧

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

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

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

    happyhuangjinjin 評論0 收藏0
  • UCloud Cube助力科盾業務容器一步到位

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

    songjz 評論0 收藏0

發表評論

0條評論

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