docker 部署go .netcore 基于ubuntu16.10

由于docker分为ce和se,最新的安装方式在这里   时间2017.09.27

-----------------------------------------------------------------------分割线-----------------------------------------------------

新项目完工,闲来无事玩docker,记录下碰到的问题,事无巨细

ubuntu官网下载最新版的系统,传送门

在使用vmware的时候碰到的问题,不能传输文件,需要安装vmware tool

linux用到的命令

mkdir 创建文件夹

clear 清屏命令

netstat -ano|grep 80 查看端口状态

使用vim碰到的问题

创建文件:vim.tiny Dockerfile

保存退出::wq(需要先按esc键再按这个命令)

因为vim用的不熟,所以用vim创建完成后,拿gedit编辑,命令:sudo gedit /etc/apt/sources.list

docker可以按照docker中文网下载安装

一般下载好的ubuntu可以用下面命令直接安装(感觉好easy)

$curl -sSl https://get.docker.com/ | sh

确认docker安装成功

$sudo docker run hello-world

这个命令会下载一个官方提供的示例镜像并运行

docker常用到的命令:

docker build 生成一个镜像image(我在用Dockerfile生成时用到) likes:docker build -t coreapp . (后面的.一定要加)

docker run 使用镜像运行一个container(实例)   likes:docker run -p 8080:8080 --name="coreapp1" -d coreapp

docker start 启动一个container likes:docker start coreapp1

docker stop 停止一个container likes:docker stop coreapp1

docker rm 删除一个container likes:docker rm coreapp1

docker ps 列出正在运行的container,docker ps -a 列出所有container

可以组合使用的命令:docker rm $(docker ps -a)删除所有实例 ,用到这个命令是因为发现没有在运行的实例但是想要删除一个镜像时由于关联不能删除

docker images 查看所有的镜像image

docker rmi 删除一个镜像 likes:docker rmi coreapp

这些都是最基本的命令。因为就是最基本的跑马篇。

在ubuntu安装go 参考官方文档 和 民间文档

下载最新版本的go包(tar.gz结尾)

解压到usr/local:sudo tar -xzf go***.tar.gz -C /usr/local

配置环境变量,还是vim不熟,拿gedit编辑

sudo gedit /etc/profile

在文件末尾添加

GOPATH="/YOUR/USER/HOME/go"

GOROOT="/usr/local/go"

PATH=$GOROOT/bin:$PATH

测试go安装是否成功(直接输入go看是否有反应)

编写最简单的go代码查看是否能build成功(第一次下载的不完整,导致很多基本包如fmt没有)

创建一个文件夹,创建一个main.go文件输入下面代码

package main

import(
    "fmt"
)
func main()  {
    fmt.Println("Hello go")
}

使用go run main.go,看其能否输出

最近在学习go开发后台,下个文章再写go API和go连接mysql

ubuntu安装.netcore 这个必须官网 为啥这么简单

$sudo apt-get install dotnet-dev-1.0.1

$dotnet new console -o helloworld

$cd helloworld

$dotnet restore

$dotnet run

我在本机拿vs2015创建了基本的web项目放到上面测试

dotnet webapplication1.dll直接启动测试

懂得很少,发现需要配置nginx(Engine X),继续配置(其实这些都可以用docker配置,暂时不明白怎么搞)

根据官网安装发现不行,只好一个一个下包,解压安装,当时参考的博客,貌似不好用

最后的结果是安装这几个文件

第一次下载的pcre2文件,发现不行,重新下载pcre文件

解压文件,进入各自的文件夹根据每个的config和configure分别安装,最后安装nginx

./config

make

make install

先查看80端口状态 netstat -ano|grep 80

启动nginx ,命令: sudo /usr/local/nginx/sbin/nginx

打开localhost,可以看到显示访问nginx

配置好nginx就可以访问刚才创建的netcore 测试程序了

docker 部署go程序,测试使用,完全参照:前人栽树

创建Dockerfile

# 得到最新的 golang docker 镜像
FROM golang:latest
# 在容器内部创建一个目录来存储我们的 web 应用,接着使它成为工作目录。
RUN mkdir -p /go/src/web-app
WORKDIR /go/src/web-app
# 复制 web-app 目录到容器中
COPY . /go/src/web-app
# 下载并安装第三方依赖到容器中
RUN go-wrapper download
RUN go-wrapper install

ENV PORT 9001
# 给主机暴露 8080 端口,这样外部网络可以访问你的应用
EXPOSE 9001
# 告诉 Docker 启动容器运行的命令
CMD ["go-wrapper", "run"]

build生成镜像:docker build --rm -t go-app .

运行测试实例:docker run -p 8080:8080 --name="test" -d go-app

查看localhost:8080 测试是否成功

docker部署.netcore程序,前人栽树(有的时候不好用)

创建Dockerfile文件

FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app
EXPOSE 5000/tcp
CMD ["dotnet","WebApplication1.dll"]

生成镜像和运行实例和前面一样~发布好测试

docker的好处是一次发布到处部署,集装箱的解释很好,准备研究kubenetes,对docker统一管理。

原文地址:https://www.cnblogs.com/AceZhai/p/6557976.html