def create_docker_container()

in composer_local_dev/environment.py [0:0]


    def create_docker_container(self):
        """Creates docker container.

        Raises when docker container with the same name already exists.
        """
        LOG.debug("Creating container")
        db_extras = self.database_extras
        grouped_db_mounts = db_extras["mounts"]
        db_mounts = {
            **grouped_db_mounts['files'],
            **grouped_db_mounts['folders'],
        }
        mounts = get_image_mounts(
            self.env_dir_path,
            self.dags_path,
            utils.resolve_gcloud_config_path(),
            utils.resolve_kube_config_path(),
            self.requirements_file,
            db_mounts,
        )
        db_vars = db_extras["env_vars"]
        default_vars = get_default_environment_variables(
            self.dag_dir_list_interval, self.project_id, db_vars
        )
        env_vars = {**default_vars, **self.environment_vars}
        if (
                platform.system() == "Windows"
                and env_vars["COMPOSER_CONTAINER_RUN_AS_HOST_USER"] == "True"
        ):
            raise Exception(
                "COMPOSER_CONTAINER_RUN_AS_HOST_USER must be set to `False` on Windows"
            )

        ports = {
            f"8080/tcp": self.port,
        }
        entrypoint = f"sh {constants.ENTRYPOINT_PATH}"
        memory_limit = constants.DOCKER_CONTAINER_MEMORY_LIMIT

        try:
            container = self.create_container(
                image=self.image_tag,
                name=self.container_name,
                entrypoint=entrypoint,
                environment=env_vars,
                mounts=mounts,
                ports=ports,
                mem_limit=memory_limit,
                detach=True,
            )
        except docker_errors.ImageNotFound:
            LOG.debug(
                "Failed to create container with ImageNotFound error. "
                "Pulling the image..."
            )
            self.pull_image()
            container = self.create_container(
                image=self.image_tag,
                name=self.container_name,
                entrypoint=entrypoint,
                environment=env_vars,
                mounts=mounts,
                ports=ports,
                mem_limit=memory_limit,
                detach=True,
            )
        except docker_errors.APIError as err:
            error = f"Failed to create container with an error: {err}"
            if is_mount_permission_error(err):
                error += constants.DOCKER_PERMISSION_ERROR_HINT.format(
                    docs_faq_url=constants.COMPOSER_FAQ_MOUNTING_LINK
                )
            raise errors.EnvironmentStartError(error)
        copy_to_container(container, self.entrypoint_file)
        copy_to_container(container, self.run_file)
        return container