[Docker]Docker-Compose

閱讀時間約 3 分鐘

Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。

想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile。

建立Dockerfile

#取得golang
FROM golang:1.15

# 為image設定必要的環境變量
ENV GO115MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
GOPROXY="xxx"

# 移動到工作目錄:your_file_path
WORKDIR your_file_path

# 將程式碼複製到容器中
COPY . .

# 將我們的程式碼編譯成二進位執行檔 執行檔名為 app
RUN go build -o app .

# 聲明服務端口
EXPOSE 8080

# 啟動容器時執行的命令
CMD ["./app"]


建立docker-compose.yml

version: '3'
services:
mysql:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
container_name: mysql
hostname: mysqlServiceHost
network_mode: bridge
ports:
- "3306:3306"
#restart: always
restart: on-failure
volumes:
- ./mysql:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/init:/docker-entrypoint-initdb.d/
- ./your_sql_name.sql:/docker-entrypoint-initdb.d/your_sql_name.sql
environment:
- MYSQL_ROOT_PASSWORD=your_root_password
- MYSQL_USER=your_user_name
- MYSQL_PASSWORD=your_password
- MYSQL_DATABASE=your_database_name
redis:
image: redis:3
container_name: redis
hostname: redisServiceHost
network_mode: bridge
restart: on-failure
ports:
- "6379:6379"

golang:
build: .
restart: on-failure
network_mode: bridge
ports:
- "8080:8080"
links:
- mysql
- redis
volumes:
- your_file_path:/go
tty: true


建立container

開啟終端機,進入到“your_file_path”後,執行“docker-compose up -d”建立container。

建構完成後,執行“docker-compose ps”,查看是否建立成功。



8會員
119Content count
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
package main import "fmt" func randGenerator() chan int { ch := make(chan int) go func() { for { //select會嘗試執行各個case,如果都可以執行,那麼隨機選一個執行 se
package main import ( "fmt" ) func foo(i int) chan int { ch := make(chan int) go func() { ch <- i }() return ch } func main() { ch1, ch2, ch3
package main import "fmt" func SendNotification(user string) chan string { //...... //建立一個通道來保存訊息 notifications := make(chan string, 500) //開啟
package main import ( "database/sql" "encoding/csv" "fmt" _ "github.com/go-sql-driver/mysql" "log" "os" "strconv" ) var db *sql.DB type User
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
package main import "fmt" func randGenerator() chan int { ch := make(chan int) go func() { for { //select會嘗試執行各個case,如果都可以執行,那麼隨機選一個執行 se
package main import ( "fmt" ) func foo(i int) chan int { ch := make(chan int) go func() { ch <- i }() return ch } func main() { ch1, ch2, ch3
package main import "fmt" func SendNotification(user string) chan string { //...... //建立一個通道來保存訊息 notifications := make(chan string, 500) //開啟
package main import ( "database/sql" "encoding/csv" "fmt" _ "github.com/go-sql-driver/mysql" "log" "os" "strconv" ) var db *sql.DB type User
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
默默覺得,要解釋 docker 與 VM 在執行方式上的差異,可以用水族箱來說明。
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好上次我們教了 Gitlab CI/CD 的 extends 如何使用,今天我們要來實際做一個真正佈署上線我們的服務,我們會分成兩個章節,第一部分先教大家怎麼寫 Docker Compose 佈署計畫書,第二部分教大家撰寫 CI/CD 自動化佈署流程計劃書 什麼是 Docker Com
Thumbnail
限時好文,歡迎支持,讓阿Han給你最貼近業界的開發實戰教學… 為什麼不害怕犯錯很重要? 開發的過程中我們最害怕的就是我的程式把系統搞掛了…,這樣一來重新安裝作業系統的成本非常高,包括還原也是,我想這會阻礙我們學習的動力,那究竟有什麼樣的技術能夠讓我們開發的同時也能夠勇於犯錯呢? 答案就是「容器化」
Thumbnail
簡介 因常會在新機器跑container,藉此紀錄安裝過程,順便寫下腳本安裝懶人包 安裝docker 檢查系統中是否已經安裝了docker 執行:ps -ef |grep docker 如上圖所示,說明系統中並沒有安裝docker 添加docker-ce倉庫 安裝yum倉庫管理工具 配置docker
Thumbnail
進入官方網站,根據自己電腦的作業系統,選擇適合的安裝檔。 切記,注意一下基本的配備要求
1. 下載stable release的docker-compose binary: curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)"
Thumbnail
程式設計師難免會遇到要自已架環境的時候,但是遇到問題時,總不能一直安裝、刪除,這時候可以用docker,先記錄一下安裝與指令 這裡使用Docker Desktop,當然也可以使用command line輸入就好 照上列網址下載之後,並且安裝完成 就可以使用command line 開始操作 如果覺得
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
默默覺得,要解釋 docker 與 VM 在執行方式上的差異,可以用水族箱來說明。
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好上次我們教了 Gitlab CI/CD 的 extends 如何使用,今天我們要來實際做一個真正佈署上線我們的服務,我們會分成兩個章節,第一部分先教大家怎麼寫 Docker Compose 佈署計畫書,第二部分教大家撰寫 CI/CD 自動化佈署流程計劃書 什麼是 Docker Com
Thumbnail
限時好文,歡迎支持,讓阿Han給你最貼近業界的開發實戰教學… 為什麼不害怕犯錯很重要? 開發的過程中我們最害怕的就是我的程式把系統搞掛了…,這樣一來重新安裝作業系統的成本非常高,包括還原也是,我想這會阻礙我們學習的動力,那究竟有什麼樣的技術能夠讓我們開發的同時也能夠勇於犯錯呢? 答案就是「容器化」
Thumbnail
簡介 因常會在新機器跑container,藉此紀錄安裝過程,順便寫下腳本安裝懶人包 安裝docker 檢查系統中是否已經安裝了docker 執行:ps -ef |grep docker 如上圖所示,說明系統中並沒有安裝docker 添加docker-ce倉庫 安裝yum倉庫管理工具 配置docker
Thumbnail
進入官方網站,根據自己電腦的作業系統,選擇適合的安裝檔。 切記,注意一下基本的配備要求
1. 下載stable release的docker-compose binary: curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)"
Thumbnail
程式設計師難免會遇到要自已架環境的時候,但是遇到問題時,總不能一直安裝、刪除,這時候可以用docker,先記錄一下安裝與指令 這裡使用Docker Desktop,當然也可以使用command line輸入就好 照上列網址下載之後,並且安裝完成 就可以使用command line 開始操作 如果覺得