1、最初に設定さドッカーアリクラウド加速、あなたは(アリクラウドアプリケーションを所有して、直接または他の非常に遅いものをインストールする)アリクラウドコンテナサービスを使用することができ
ます。https://XXXX.mirror.aliyuncs.comアリクラウドアクセラレーションサービス注意アドレスの割り当て
須藤MKDIR -pは/ etc /ドッカー 須藤ティー/etc/docker/daemon.json << - 'EOF' { "レジストリミラー":[ "https://XXXX.mirror.aliyuncs.com"] } EOF 須藤systemctlデーモンリロード 須藤systemctl再起動ドッカ
2、インストールドッカー
自動的にインストールするためのスクリプトを使用して
$カール-fsSL get.docker.com -o get-docker.sh $ sudoをshのget-docker.sh --mirror Aliyun
3、インストールジェンキンスは、
作業ディレクトリのジェンキンスを作成します
MKDIRは/ usr / local /のジェンキンス
ミラーリングプルジェンキンス
ドッキングウィンドウプルジェンキンス/ジェンキンス:LTS
1000はコンテナジェンキンスユーザーで変更ジェンキンスディレクトリとディレクトリのアクセス権のドッキングウィンドウ、UID
chownコマンド-R 1000年:1000は/ usr / local /ジェンキンス のsudoのchown -R 1000年:1000 /var/run/docker.sockの ドッキングウィンドウの実行には、-p 8080を-itd:8080 -p 50000:50000 --nameジェンキンス--privileged =真-vは/ usr / local /のジェンキンス:は/ var / jenkins_home -vは/ usr / binに/ドッキングウィンドウ:/ binに/ドッキングウィンドウ-v /var/run/docker.sock:/var/run/docker.sockジェンキンス/ジェンキンス:LTS
パラメータの説明:
-p 8080:8080 -p 50000:50000 -マッピングジェンキンスポート
--nameのジェンキンス-自分自身の名前容器の名前
特権=真-コンテナ付与された管理者権限
-vは/ usr / local /のジェンキンス:は/ var / jenkins_home -マッピングジェンキンスディレクトリ
-vは/ usr / binに/ドッキングウィンドウ: / binに/ドッカ- dockeディレクトリマッピング時には、コンテナにドッキングウィンドウのコマンドを実行するために必要な
-v /var/run/docker.sock:/var/run/docker .sock -マッピングドッキングウィンドウは、必要に応じてコンテナのドッキングウィンドウのコマンドを実行するコマンドを実行します。
設定ジェンキンスは、
容器が成功を見て始めた後、我々は+ジェンキンスポートへのアクセスだけで実行に対処することができます
// IPアドレス:8080をhttpなどの
インストールに成功しアクセスした後、以下のようになります。
アクセスは初めてのプロンプトパスワードを必要とする、私たちはただでマッピングされたジェンキンスディレクトリで、このデフォルトのパスワードを参照してください。
デフォルトのパスワードのパス:は/ usr / local /ジェンキンス/秘密/( 前回USR /ローカル/のジェンキンスに注意しているだけの独自のパスマッピングされたディレクトリ)
インストールが完了した後、ユーザー名とパスワードを作成して、インストールを完了するために、当社のホームページにアクセスしてください。
プロジェクトを作成します3。
リリース1、ソースコードのコンパイルプロジェクト
リリースされたソースコードプロジェクトがgitのサーバーに送信されるソースコードは、ジェンキンスさんはgitのプル経由で最新のソースコードを取得し、設定にDockerfileによって公開プロセスをコンパイルします。容器にドッカーミラーと実行後、この構築物。
ネットコアWebプロジェクトを作成します。
あなたはドッカーサポートを有効にするように選択することができますプロジェクトを作成します。
デフォルトでは、私たちDockerfileコードのコンパイルを支援し、アクションを公開することです。コードのデフォルト設定とは、サーバー一緒にドッカービルドミラーに提出し、適切なDockerfileファイルです。
プロジェクトが作成された後のgitサーバーにコードを提出しました。(SVN、することもできます)
gitのプロジェクトディレクトリは、ルートディレクトリにDockerfileの注目をコピーします。ミラーの建設は、ルートディレクトリから実行された時間のために。
2、コンパイル済みのリリースエンジニアリング
コンパイルされたリリースエンジニアリング、SVNまたはローカルエリアネットワークのためにこの方法をGitは、ソースコードが外部ネットワークに公開する必要はありませんしたくありません。プロジェクトが動作するこの方法は、包装作業を公開しています。このような戦争のファイルに共通のパッケージのJavaパッケージとして。.NETはDLLファイルを対応して生成されます。
リリース前プロジェクトでは、我々はあなたが公開するときにコピーのファイルにこのディレクトリを公開するファイルのプロパティDockerfileプロジェクトに変更を加えます。
ポストは必ずDockerfileファイルをインクルードすることが、以下に示すように、自分のgitの(またはSVN)ディレクトリを公開するファイル。ファイルのリリース後、あなたはそれらのニーズがappsetting.jsonに従ってDLLやその他の文書を更新されません取り除くことができます。唯一のマイナーのままにすると、このファイルを更新します。
発行デフォルトDockerfileファイルがコンパイルされるコマンドが含まれているためDockerfileはので、ここでは、これらの関連する操作コマンドを削除する、ファイルを変更し、設定するには、次のコマンドを保持します。
保存してgitのサーバーにすべてのファイルに提出すること。
提交后的git目录。
建议:无论是代码编译发布工程还是已编译的Release工程,第一次使用Docker部署时最好先自己手动将这些文件拷贝到服务器,并手动构建对象并运行容器看是否成功;能否访问网站。也就是先不用Jenkins将这些流程自己手动走一遍,确保一些目录包括Dockerfile等都是配置正确的。
如只想将发布文件提交到git,可以下载git桌面版本,在本地新建项目,同步到git线上即可;
4. 创建JenKins任务
项目工程创建完成并提交到git服务器后,开始在Jenkins里面创建任务。
输入项目描述,源代码管理选择自己对应的即可。
我这里选择的git。第一次添加项目时需要添加一种授权方式点击右边添加按钮即可。
选择添加授权方式 常用的就是用户名加密码或者SSH方式。
下一步设置构建环境
设置触发器,这里主要是设置自动触发条件,有定时构建、远程触发构建、轮询SCM。
这里只设置轮询SCM形式的,很简单的方式。意思是在指定间隔时间内会去轮询git或svn中版本是否有变化。如果有就立即构建该项目。其实就是做到只要代码提交了 则立刻就能自动构建项目进行发布;不在需要其他任何操作了。
选择构建—>执行shell;当然我们这里是linux服务器所有多数选择执行shell。
添加shell 命令
#!/bin/bash # 获取短版本号 GITHASH=`git rev-parse --short HEAD` docker stop webtest docker rm webtest echo ---------------Building Docker Image...------------------ docker build -t webtest:$GITHASH . docker tag webtest:$GITHASH webtest:latest echo ---------------Launching Container...------------------ docker run --name webtest -d -p 8005:80 webtest:latest
应用--保存
在构建开始前,请确认已安装ASP.NET Core Runtime与.NET Core SDK
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1
请先提前安装,否则构建时可能会因无法安装而超时
自动开始构建了 注意jenkins这里时间是默认是utc时间。utc时间转换我们北京时间是要+8小时的。
蓝色图标代表构建成功,如果失败会是红色
查看控制台输出信息,尤其构建失败时能够从里面获取到失败原因等。
构建失败情况
1、ASPNETCORE项目发布中Dockfile文件中配置项没有修改
2、Docker命令不存在,目录权限没有设置
3、构建时超时,aspnetcore运行时没有安装
nginx安装
docker pull nginx:latest docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
--name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
nginx 代理设置
docker ps -a 获取nginx容器ID
docker exec -it 容器ID /bin/bash 进入容器
因为容器没有安装VIM,先安装VIM
apt-get update && apt-get install vim -y
进入/etc/nginx/conf.d
新建文件
vim xxxx.conf
server { listen 80; server_name example.com *.example.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
可参考
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.1
nginx -t 配置文件检测
nginx -s reload 更新配置文件
最后成果: