asp.net core를 docker로 움직여 본 메모
10313 단어 ubuntu16.04도커VagrantASP.NET_Core
ASP.NET CORE 사용
docker로 설치하여 사용해보십시오.
공식 의 샘플은 배포용과 같았으므로 개발 환경의 샘플을 볼 수 있도록 해본다.
환경
폴더 구조
dotnet
- bin # dockerコマンド用シェルファイル
- start.sh # docker-compose run dotnet /bin/bash
- container_build.sh # docker-compose build
- bash.sh # docker-compose run dotnet /bin/bash
- docker-compose.yml
- dotnet
- Dockerfile
- project # アプリケーションプロジェクトディレクトリ
- src
- SampleWebApplication # yo aspnet generatorで作成
+ bin
+ Controllers
+ Data
+ Models
+ obj
+ Properties
+ Services
+ Views
+ wwwroot
- .bowerrc
- .gitignore
- appsettings.Development.json
- appsettings.json
- bower.json
- global.json
- Program.cs # URLをdocker用に修正
- README.md
- SampleWebApplication.csproj
- SampleWebApplication.db
- Startup.cs
- web.config
- nginx # docker外からasp.netにアクセスできるようにプロキシとして利用
- Dockerfile
- default.conf
각 파일 설정
가상 환경 설정.
# ansibleインストール用shell
$ansible_install = <<SHELL
if ! type ansible > /dev/null 2>&1; then
sudo apt-get update
sudo apt-get -y install libffi-dev libssl-dev python-pip # package管理ツール
sudo pip install --upgrade pip
sudo pip install ansible # provisioning ツール
fi
SHELL
# virtual machine設定
Vagrant.configure(2) do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.box_version = "2.2.9"
# 繋がらないときは/etc/network/interfaces を確認。enp0s8に設定してやる。
config.vm.network "private_network", ip: "192.168.50.10", auto_config:false
config.vm.provider "virtualbox" do |vm|
vm.memory = 2048
vm.linked_clone = true
vm.customize [ "modifyvm", :id, "--ioapic", "on"]
# vm.gui = true # 起動が止まるときの確認用
end
config.vm.provision "shell", inline: $ansible_install
config.vm.provision "shell", inline: <<-SHELL
sudo ansible-playbook -i /vagrant/provision/playbooks/inventory/hosts /vagrant/provision/playbooks/site.yml -c local
SHELL
end
docker-compose 구성 파일.
docker-compose.yml
version: '2'
services:
proxy:
build: ./nginx
links:
- dotnet
ports:
- "80:80"
dotnet:
build: ./dotnet
environment:
- ASPNETCORE_ENVIRONMENT=Development
volumes:
- ./dotnet/project/src/SampleWebApplication/Program.cs:/aspnetapp/project/src/SampleWebApplication/Program.cs
asp.net 설정
dotnet/Dockerfile
FROM microsoft/aspnetcore-build
WORKDIR /aspnetapp
COPY . .
WORKDIR /aspnetapp/project/src/SampleWebApplication
RUN dotnet restore
RUN bower install --allow-root
ENTRYPOINT ["dotnet", "run"]
※SampleWebApplication는 yo-generator aspnet 로 작성.
yo aspnet mvc bootstrap SampleWebApplication
주소 및 포트 지정.
dotnet/project/src/SampleWebApplication/Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
namespace SampleWebApplication
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls("http://0.0.0.0:5001") // <-- 追記.ポート番号は任意。
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
프록시
nginx/Dockerfile
FROM nginx
COPY default.conf /etc/nginx/conf.d/default.conf
dotnet의 50001 포트에 80번 포트의 통신을 전달하는 프록시 설정.
nginx/default.conf
server{
listen 80;
server_name 192.168.50.10;
location / {
proxy_pass http://dotnet:5001;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host 192.168.50.10;
proxy_set_header X-RealIP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
이 시점에서 소스
github
실행
컨테이너를 만든 후 asp.net을 얻는다.
./bin/container_build.sh # コンテナ作成
./bin/start.sh # 実行
브라우저에서 htp //192.168.50.10에 액세스하면 다음과 같은 화면이 표시됩니다.
참조
dotnet docker
aspnet docker
docker compose
요
Reference
이 문제에 관하여(asp.net core를 docker로 움직여 본 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hibohiboo/items/00f8c5e172d00c15a269텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)