-- Docker的基础知识(镜像,容器,仓库等概念,还有基本命令)就再也不提了,能够从github查看相关中文文档(https://github.com/yeasy/docker_practice/blob/master/SUMMARY.md)。mysql
1 FROM mcr.microsoft.com/dotnet/core/sdk:2.2 as build-env 2 # code目录 3 WORKDIR /code 4 5 #项目拷贝至code 6 COPY *.csproj ./ 7 RUN dotnet restore 8 9 # #代码拷贝至code 10 COPY . ./ 11 # #发布文件在code/out文件夹 12 RUN dotnet publish -c Release -o out 13 # #找到runtime 14 FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 15 # #新建一个目录app 16 WORKDIR /app 17 # #code目录发布的代码文件放到app 18 COPY --from=build-env /code/out ./ 19 # 输出到80端口 20 EXPOSE 80 21 ENTRYPOINT [ "dotnet","UserApi.dll" ]
docker compose 编排启动多个容器git
service
):一个应用的容器,实际上能够包括若干运行相同镜像的容器实例(例如咱们的demo中userapi 和 db)。project
):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml
文件中定义 (userapi和db加起来为一个项目)。1 version: '3' 2 services: 3 db: 4 image: mysql/mysql-server:5.7.26 #镜像 5 container_name: db #容器名称 6 command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci #运行命令,把mysql容器字符集修改成utf8 7 restart: always 8 ports: 9 - '3308:3306' #端口映射 10 environment: 11 MYSQL_ROOT_PASSWORD: pwd123456 12 MYSQL_USER: lmc 13 MYSQL_PASSWORD: pwd123456 14 volumes: 15 - /d/docker/beta/mysqlcompose-init:/docker-entrypoint-initdb.d #资料卷挂载,mysql容器执行时候会执行绝对路径/d/docker/beta/mysqlcompose-init下的sql文件 16 web: 17 build: . 18 container_name: 'aspnetcore' 19 ports: 20 - '8003:80' 21 depends_on: #启动web以前,检查依赖项,先启动db 22 - db
咱们来看一下生成的networkgithub