docker 編譯開發代碼做鏡像


文件目錄

Dockerfile 是docker制作鏡像的文件,docker_run.sh是sh文件,gin_test是go編譯之后的linux可執行程序,gintest.env是配置文件夾

 

 

 

 

 

 

 

首先寫一個Dockerfile的文件 用來執行build 編譯為鏡像

# Dockerfile

# 下載基礎鏡像 這相當於電腦windows系統 所有一切都要在該系統上操作
FROM ubuntu:latest


# WORKDIR 指定容器中的工作目錄,默認文件都是在哪保存執行
# WORKDIR /webapp/


# 暴露鏡像的端口供主機做映射,不過一般都是直接docker run ... -p 宿主機端口:容器端口  ... 設置了  可以設置多個
EXPOSE 7999
EXPOSE 8888


# COPY 將主機的文件復制到鏡像內      其中ADD和COPY一樣 但是ADD會對壓縮文件(tar, gzip, bzip2, etc)做提取和解壓操作
# COPY如果目的位置不存在,Docker會自動創建所有需要的目錄結構,但是它只是單純的復制,並不會去做文件提取和解壓工作
COPY gin_test .
COPY gintest.env .



# VOLUME 用來向基於鏡像創建的容器添加卷。
# 比如你可以將mongodb鏡像中存儲數據的data文件指定為主機的某個文件。(容器內部建議不要存儲任何數據)
# VOLUME 主機目錄 容器目錄
# VOLUME /data/db /data/configdb


# 鏡像內部的執行... 下載數據軟件等...           並不是在宿主機上執行 而是到鏡像中執行的命令
# 比如這些命令RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME
# 容器內部執行apt更新
# RUN ["apt-get" "update"]


# 容器啟動時執行指令 ENTRYPOINT
# CMD docker run -it -d -p 7999:7999 ubuntu

 

# docker_run.sh

#!/bin/bash
# docker build 根據當前目錄的Dockerfile文件內容制作鏡像 . 代表當前目錄(可以絕對路徑)  -t表示設置鏡像名字
docker build -t myweb .

# 加載鏡像啟動容器 根據鏡像名字設置啟動模式 -itd 表示后台命令行模式... -p在宿主機和容器開啟的端口連接一起
# /bin/bash 表示在容器內部執行一些命令但不進入 -c 如果需要找容器內部執行命令 必須有-c 后面這是執行命令 啟動容器內復制過去的./gin_test
docker run -itd -p 1111:7999 --name="myweb_docker_one" myweb /bin/bash -c ./gin_test

# 展示docker容器的執行狀況
docker ps



# 持續監控docker容器內部的輸出日志 -t 監控日志 --tail 只顯示多少條
# docker logs -t --tail=20 myweb_docker_one

# 進入容器內部 docker exec -it 容器名字 bash 執行命令行模式 如何有其他需求可以進入內部執行,不過一般都在創建容器階段執行了
# docker exec -it myweb_docker_one bash

# 進入容器內部執行 接上面的命令
# ./gin_test

 

 

 

 

 

將工作目錄的四個文件拉取到linux服務器上,最好同一個目錄

 

 

 注意 docker_run.sh 和gin_test 需要進行添加執行權限

chmod +x docker_run.sh
chmod +x gin_test

 

還有如果sh文件在win上寫的,在linux上執行需要轉換格式,不然出錯

 

 

 格式化命令如下

# vim打開sh文件
vim docker_run.sh

# 輸出
:set fileformat=unix

鏈接

 

 

 

 

 

執行sh文件

# 已輸出每行命令的格式執行

bash -x docker_run.sh

輸出如下

 

 

 

 

 

 

測試能否外部訪問內部web程序

能看到訪問該服務器宿主機ip和端口能訪問到 容器內的web程序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM