Olá pessoal,
Estou desenvolvendo um aplicativo com um time e decidimos desenvolver o backend em uma API Asp.net Core 2.0.
Até aí tudo bem, o sistema funciona perfeitamente e tudo roda maravilhosamente bem quando compilamos tanto em Windows quanto em linux.
Cada um do time tem uma máquina diferente, com SOs diferentes e decidimos montar um ambiente no Vagrant, com os projetos, frontend + backend + db, em containers docker, até mesmo pra quando o time crescer ficar mais fácil.
Cada projeto tem a sua porta definida, o frontend na 4200 e o backend na 3000.
Criamos o DockerFile para o frontend, pro backend e geramos um docker-compose.yml, tudo nos conformes.
O problema é: Eu até consigo rodar a aplicação, comunicar com o banco e tudo mais, só que quando eu tento acessar algum endpoint da API pelo browser ou pelo Postman, não funciona nem com reza brava.
Esses são os arquivos que eu criei:
Vagrant
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision :docker
config.vm.provision :docker_compose
config.vm.provision :shell, path: "./bootstrap.sh", run: 'always'
# fsnotify will notify the guest machine about changes in partywise-docker/partywise-client allowing live-reload
config.vm.synced_folder "./projeto-docker/projeto-client", "/vagrant/projeto-docker/projeto-client", fsnotify: true, exclude: ["node_modules", ".idea"]
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 4200, host: 4200
config.vm.network "forwarded_port", guest: 5432, host: 5432
config.vm.provider "virtualbox" do |v|
v.memory = 4048
v.cpus = 2
end
end
DockerFile Backend
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS http://+:3000
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY Projeto.Core/Projeto.Core.csproj Projeto.Core/
RUN dotnet restore Projeto.Core/Projeto.Core.csproj
COPY . .
WORKDIR /src/Projeto.Core
RUN dotnet build Projeto.Core.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Projeto.Core.csproj -c Release -o /app
FROM base AS final
WORKDIR /
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Projeto.Core.dll"]
docker-compose
version: "3.5"
x-defaults: &defaults
tty: true
stdin_open: true
services:
core:
<<: *defaults
build:
context: ./projeto-core
dockerfile: Projeto.Core/Dockerfile
ports:
- "3000:3000"
links:
- db
client:
<<: *defaults
hostname: client
build:
context: ./projeto-client
dockerfile: Dockerfile.dev
volumes:
- node-modules-cache:/opt/webapps/projeto-client/node_modules:cached
- ./projeto-client:/opt/webapps/projeto-client
ports:
- "4200:4200"
nginx:
<<: *defaults
image: nginx
hostname: nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "80:80"
db:
image: postgres:10.1
hostname: db
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
pgdata:
name: pgdata
node-modules-cache:
name: node-modules-cache
O frontend está perfeito, mas a API asp.net core não.
Espero que alguém consiga me dar uma luz.
Abraços.