2016-01-29 18 views
0

我是一個PHP開發人員,所以大部分時間用於測試,我對我做什麼工作的任何應用程序是:搭載Vmware並轉移到Docker,如何正確設置Dockerfile或cointainer?

  • 創建VMware虛擬機,並安裝一個完整的操作系統:大部分時間我喜歡用的CentOS在虛擬機上的意義
  • 設置的一切:Apache和模塊,PHP和模塊和MySQL或MariaDB的

每當我從頭開始一個新的虛擬機有幾個步驟,我跑:

# Install EPEL and Remi Repos 
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm 
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm 
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm 

# Install Apache, PHP and its dependencies 
yum -y install php php-common php-cli php-fpm php-gd php-intl php-mbstring php-mcrypt php-opcache php-pdo php-pear php-pecl-apcu php-imagick php-pecl-xdebug php-pgsql php-xml php-mysqlnd php-pecl-zip php-process php-soap 

# Start Apache on 235 run level 
chkconfig --levels 235 httpd on 

# Setup MariaDB repos 
nano /etc/yum.repos.d/MariaDB.repo 

# Write this inside the MariaDB.repo file 
[mariadb] 
name = MariaDB 
baseurl = http://yum.mariadb.org/5.5/centos6-amd64 
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
gpgcheck=1 

# Install MariaDB 
yum -y install MariaDB MariaDB-server 

# Start service 
service mysql start 

# Start MariaDB on run level 235 
chkconfig --levels 235 mysql on 

# Setup MariaDB (this is interactive) 
/usr/bin/mysql_secure_installation 

# A few more steps 

這是令人討厭的任務,我需要一直做下去(當我把虛擬機嘗試新事物並在這裏和那裏改變時。所以我認爲,Docker在這裏是爲了節省。閱讀了一些後,我知道了Docker的基本知識,並通過運行docker run -it centos來獲取CentOS映像,但這只是一個bash shell和一個基本的CentOS映像,所以我的任務是安裝&安裝所有東西。

下面是我對碼頭工人和疑慮如何處理這種重複,共同的任務:

  • 我應該創建一個Dockerfile(這是我第Dockerfile所以可能的順序是不正確的或者我完成錯誤)與下面的內容,並把所有重複的任務run-setup.sh文件?

    FROM centos:latest 
    MAINTAINER MyName <MyEmail> 
    
    RUN yum -y update && yum clean all 
    
    ADD run-setup.sh /run-setup.sh 
    RUN chmod -v +x /run-setup.sh 
    
    CMD ["/run-setup.sh"] 
    
    EXPOSE 80 
    
  • 我應該像在VM上那樣手動執行重複任務嗎?

  • 命令/usr/bin/mysql_secure_installation是完整的互動,因爲我需要回答幾個問題並設置密碼,如何處理這一個或任何其他交互?
  • 有什麼更好的想法?

回答

1

我開始回答您的問題:

  • 是的,你可以用一個Dockerfile開始。不過,我建議你直接在文件中使用命令,以便將來更易於維護。例如,可能是Dockerfile of apache from github

  • 重複任務,沒有。您可以將容器的圖像以pushing your images保存到公共註冊表中,如docker hub,或者您可以託管private one,該容器本身可能是碼頭集裝箱。

  • 應該以某種方式使用命令行選項,bash read或傳遞一個文件(如果可能的話)來處理內部活動。我不認爲這有一個直接的答案。

  • 更好的想法,通常的模式是將Dockerfile託管在github或bitbucket公共存儲庫中,然後配置automated buildsdocker hub。他們都來免費:)

也有很多現場工作的例子,你可以從docker hub得到。開始搜索一張圖片,選擇最流行的/官方的圖片,然後您必須鏈接到Dockerfile

讓我知道它是怎麼回事。

+0

好的,我使用的Dockerfile建議我開始看到一些和創建自己的。我會將我的映像推送到Docker集線器,以便任何人都可以使用它,但我需要先結束並測試;)。由於我不是bash腳本專家,所以我被困在步驟(3)中,所以我將進一步研究這一點,讓我們看看我能做些什麼。當然,我會盡快使用自動構建。 – ReynierPM

+0

如果您認爲您已完成此操作,請將其標記爲答案:) – Maniankara

相關問題