使用docker compose 构建多个镜像

  • 定义docker compose
    version: '3'
    
    services: 
      composedb:
        image: mysql/mysql-server
        container_name: composedb
        command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
        restart: always
        ports:
         - "3306:3306"
        environment:
         MYSQL_ROOT_PASSWORD: pwd123456
         MYSQL_USER: test
         MYSQL_PASSWORD: pwd123456
        volumes:
         - /docker/network/beta/mysql-init:/docker-entrypoint-initdb.d  
      web:
        build: .
        container_name: aspnetcore
        ports:
         - "8004:80"
        #entrypoint: "sh ./wait-for-it.sh composedb:3306 -- sh  ./aspnetcore.sh"
        #command: ["./wait-for-it.sh", "composedb:3306", "--", "./aspnetcore.sh"]
        depends_on:
         - composedb
  • 修改初始化实力代码当数据库镜像初始化完毕后执行数据初始化
     public static async Task SeedAsync(IApplicationBuilder ApplicationBuilder, ILoggerFactory LoggerFactory, int? retry = 0)
            {
                var retryForAvaibility = retry.Value;
                using (var scope = ApplicationBuilder.ApplicationServices.CreateScope())//数据库未初始化失败会catch
                {
                    try
                    {
                        var context = (UserContext)scope.ServiceProvider.GetService(typeof(UserContext));
                        var logger = (ILogger<UserContextSeed>)scope.ServiceProvider.GetService(typeof(ILogger<UserContextSeed>));
                        logger.LogDebug("Begin UserContextSeed SeedAsyc");
                        context.Database.Migrate();
                        if (!context.Users.Any())
                        {
                            context.Add(new Model.UserInfo { Name = "cyao", Company = "nocompany", Title = "软件工程师" });
                            context.SaveChanges();
                        }
                    }
                    catch (System.Exception ex)
                    {
                        retryForAvaibility++;
                        if (retryForAvaibility > 10)
                        {
                            var logger = LoggerFactory.CreateLogger(typeof(UserContextSeed));
                            logger.LogError(ex.Message);
                            await SeedAsync(ApplicationBuilder, LoggerFactory, retryForAvaibility);
                        }
                    }
                }
            }
  • liunx 跑到对应的docker-compose 文件路径后执行build 然后将docker-compose up起来
  • docker-compose build 构建dockers-compose镜像
  • docker-compose up
  • docker-compose down

猜你喜欢

转载自www.cnblogs.com/chongyao/p/9204152.html
今日推荐